LinuxのSSHでのシェルコマンドについて教えてください。

よく海外のテキストファイルを頂きますが、日本語に変える事でUTF-8に保存し直しております。
海外の形式はASCIIなのでしょうか?日本語が変わることでS-JIS又はUTF-8に変更しないとなりません。

WEB上でBLOGテンプレートをいじるときに、日本語化するために
シェルで多数のファイルをUTF-8に一括変換する方法があればお教えください。
一枚ずつ、セーブし直すと時間がかかりそうですので。
よろしくお願いします。

回答の条件
  • 1人50回まで
  • 登録:
  • 終了:2011/08/01 09:36:40

ベストアンサー

id:JULY No.1

回答回数966ベストアンサー獲得回数247

海外のテキストファイルと言っても、中国語やハングル語のテキストファイルも、海外のテキストファイルですが...。

海外の形式はASCIIなのでしょうか?

英語のテキストファイルの事を行っているのであれば、ASCII のテキストファイルは UTF-8 と互換性があります。

UTF-8 - Wikipedia

つまり、ASCII コードの範囲しか使われていないテキストファイルは、変換すること無く、UTF-8 のファイルとして扱えます。


追記:

macを使っていますが、ファイルを落として開くとS-JISになってしまい、

Mac ユーザではないですが、ASCII 文字のみテキストファイルを、Shift_JIS 扱いで開くエディタは多いです。


純粋に ASCII コードの範疇の文字しか無ければ、ASCII でも、Shift_JIS でも UTF-8 でも同じです。


仮に「abc123」という中身のテキストファイルがあれば、ASCII コードでも、Shift_JIS でも、UTF-8 でも「61 62 63 31 32 33」(16 進数表記)というバイト列です。逆にこのバイト列を与えられたとき、その文字コードは ASCII かもしれないし、Shift_JIS かもしれないし UTF-8 かもしれません。エディタが文字コードを判定する事を考える場合、純粋な ASCII コードしか無い場合には、それを Shift_JIS としても、UTF-8 でも正解なので、どれを採用するかはエディタ次第です。


# 但し、Winodws のメモ帳の場合、「EF BB BF」という3バイトが先頭に付く。


気がつくと文字化けに見舞われています。

もし、本当に ASCII コードのみテキストファイルであれば、意図的に UTF-16 など、ASCII と互換性がないコードとして開かない限り、文字化けする事は考えにくいです。


なので、私の回答の最初に戻りますが、「海外のテキストファイル」と言っても色々あります。中国語やハングル語なら分かりやすいですが、ドイツ語やフランス語にある、「アルファベットと記号が組み合わされたような文字」が一つでもあれば、そもそも、ASCII コードでは無いことになります。


エディタに限らず、多くの文字コードの判定は、テキストファイルの全ての文字コードを調べるのではなく、ある程度のバイト数を読み込んだところで、「これは、この文字コードだろう」と判断します。なので、推定した文字コードが正しいとは限りませんし、厳密には、文字コードが先に分かっていないテキストファイルを、特定の文字コードへ正確に変換する事は出来ません。


という原理原則はありますが、予め文字コードが分かっていれば、MacOS に iconv が標準で入っているようです。

404 Blog Not Found:tips - Mac OS X - には iconv も piconv も入っている

あと、MacOS ようの nkf もあるようです。

http://homepage.mac.com/matsuan_tamachan/software/NkfInstall.html

nkf の方が全般に親切で、文字コードの推定も出来ますし、多少、特殊なコードが混じっていても、可能なかぎり変換してくれます。iconv はちょっとでも間違いを見つけると、そこで処理を中断してしまうような、厳格さがあります。

id:Becky_moni

macを使っていますが、ファイルを落として開くとS-JISになってしまい、気がつくと文字化けに見舞われています。

使い方の問題かもしれませんが、シェルのコマンドがわかればそれで解決します。

MacはUTF-8の環境です。エディターは主にCotEditor又はCodaで共に、UTF-8機能は備えています。

2011/07/29 12:20:14

その他の回答1件)

id:JULY No.1

回答回数966ベストアンサー獲得回数247ここでベストアンサー

海外のテキストファイルと言っても、中国語やハングル語のテキストファイルも、海外のテキストファイルですが...。

海外の形式はASCIIなのでしょうか?

英語のテキストファイルの事を行っているのであれば、ASCII のテキストファイルは UTF-8 と互換性があります。

UTF-8 - Wikipedia

つまり、ASCII コードの範囲しか使われていないテキストファイルは、変換すること無く、UTF-8 のファイルとして扱えます。


追記:

macを使っていますが、ファイルを落として開くとS-JISになってしまい、

Mac ユーザではないですが、ASCII 文字のみテキストファイルを、Shift_JIS 扱いで開くエディタは多いです。


純粋に ASCII コードの範疇の文字しか無ければ、ASCII でも、Shift_JIS でも UTF-8 でも同じです。


仮に「abc123」という中身のテキストファイルがあれば、ASCII コードでも、Shift_JIS でも、UTF-8 でも「61 62 63 31 32 33」(16 進数表記)というバイト列です。逆にこのバイト列を与えられたとき、その文字コードは ASCII かもしれないし、Shift_JIS かもしれないし UTF-8 かもしれません。エディタが文字コードを判定する事を考える場合、純粋な ASCII コードしか無い場合には、それを Shift_JIS としても、UTF-8 でも正解なので、どれを採用するかはエディタ次第です。


# 但し、Winodws のメモ帳の場合、「EF BB BF」という3バイトが先頭に付く。


気がつくと文字化けに見舞われています。

もし、本当に ASCII コードのみテキストファイルであれば、意図的に UTF-16 など、ASCII と互換性がないコードとして開かない限り、文字化けする事は考えにくいです。


なので、私の回答の最初に戻りますが、「海外のテキストファイル」と言っても色々あります。中国語やハングル語なら分かりやすいですが、ドイツ語やフランス語にある、「アルファベットと記号が組み合わされたような文字」が一つでもあれば、そもそも、ASCII コードでは無いことになります。


エディタに限らず、多くの文字コードの判定は、テキストファイルの全ての文字コードを調べるのではなく、ある程度のバイト数を読み込んだところで、「これは、この文字コードだろう」と判断します。なので、推定した文字コードが正しいとは限りませんし、厳密には、文字コードが先に分かっていないテキストファイルを、特定の文字コードへ正確に変換する事は出来ません。


という原理原則はありますが、予め文字コードが分かっていれば、MacOS に iconv が標準で入っているようです。

404 Blog Not Found:tips - Mac OS X - には iconv も piconv も入っている

あと、MacOS ようの nkf もあるようです。

http://homepage.mac.com/matsuan_tamachan/software/NkfInstall.html

nkf の方が全般に親切で、文字コードの推定も出来ますし、多少、特殊なコードが混じっていても、可能なかぎり変換してくれます。iconv はちょっとでも間違いを見つけると、そこで処理を中断してしまうような、厳格さがあります。

id:Becky_moni

macを使っていますが、ファイルを落として開くとS-JISになってしまい、気がつくと文字化けに見舞われています。

使い方の問題かもしれませんが、シェルのコマンドがわかればそれで解決します。

MacはUTF-8の環境です。エディターは主にCotEditor又はCodaで共に、UTF-8機能は備えています。

2011/07/29 12:20:14
id:mjy No.2

回答回数70ベストアンサー獲得回数22

文字化けが起こるのは下記の手順でしょうか?


1. Linux サーバ上にある ASCII のファイルをダウンロード

2. Mac 上で編集のために CotEditor等 で開く

3. 日本語を加える

4. そうすると Shift-JIS になる

5. Linux サーバに Shift-JIS になったファイルを戻すと、サーバは UTF8 の設定なので、文字化けの原因になる


この場合の解決方法としては二つあります。

(日本語を加える前の ASCII のファイルを UTF8 に変換する事はありません。ASCII は UTF8 だからです)


1. (CotEditor 等で)編集する際に、UTF8 で扱う

エディタで確実に UTF8 を使えるように設定して下さい。

これが正統な解決方法です。

私は使ったことが有りませんが、CotEditor だとここらへんに記述が有ります。

http://www.aynimac.com/p_blog/article.php?id=745

http://www.aynimac.com/p_blog/article.php?id=1087


2. Linux サーバに移してから UTF8 にする

iconv を使う場合には文字コードの自動判別機能が有りませんので、元ファイルは確実に SHIFT-JIS である必要が有ります。

# 拡張子 .txt のファイルを変換
# ファイル名に .back を加えてバックアップ
for file in *.txt; do mv $file $file.back; iconv -f SHIFT-JIS -t UTF8 $file.back -o $file; done

nkf の場合。

# 拡張子 .txt のファイルを変換
# ファイル名に .back を加えてバックアップ
# 入力ファイルの文字コードは自動判別
for file in *.txt; do mv $file $file.back; nkf -O -w8 $file.back $file; done
  • id:JULY
    追記しました。

    原理原則としては、「どんな文字コードでも正確に文字コードを推定方法は無い」ので、100% 確実な方法は無いです。なので、変換結果が思うようにならない場合には、トライ&エラーを繰り返して、元の文字コードが何かを判断するしかないです。
  • id:Becky_moni
    JULY様
    mjy様
    ご丁寧な回答に誠に感謝します。
    海外のテキストファイルというのは基本は英語(ASCII)です。
    お二人のご説明でかなりスキルがアップいたしました。
    知らない事ばっかりでお恥ずかしいです。

    CotEditorやCodaの初期設定がもたらすこととわかり、早速設定を変更できました。
    さらにコマンドもお教え頂き本当に感謝しております。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません