人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

●質問者: ベキ
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:ASCII blog Linux S-JIS SSH
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● JULY
ベストアンサー

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

海外の形式は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 はちょっとでも間違いを見つけると、そこで処理を中断してしまうような、厳格さがあります。

◎質問者からの返答

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

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

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


2 ● mjy

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


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
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ