Linuxで文字化け 文字コード変換する 

スポンサーリンク

OSの文字コードとファイルの文字コードが一致していないとファイルが文字化けしてしまう。
Windowsで作成してLinuxに持ってくるよく文字化けする。

文字コードの調べ方

fileコマンドに -b オプションをつける。
ちなみにOS側の文字コードは
# echo $LANG で調べる。

# file -b testfile.txt
Non-ISO extended-ASCII text, with CRLF, NEL line terminators

何やら文字列がでてくる。下記の通り、文字コードを判別することができる。

file コマンドの出力結果文字コード
ISO-8859 textEUC
Non-ISO extended-ASCII textShift-JIS
ASCII textJIS
UTF-8 textUTF-8

文字コードを変換する。

iconv -f 元の文字コード -t 変換したい文字コード 対象ファイル
で変換する。
例)SHIFT_JIS から UTF8 に変換する場合

# iconv -f SHIFT_JIS -t UTF-8 testfile.txt

EUCから変換する場合は -f EUC と指定しても「iconv: `EUC’からの変換はサポートされていません」とエラーになるので下記のように指定する

# iconv -f euc-jp -t UTF-8 testfile.txt

別のファイルに保存したい場合はリダイレクトすればよい。

# iconv -f SHIFT_JIS -t UTF-8 testfile.txt > testfile2.txt
文字コードが変更されている。
# file -b testfile2.txt
UTF-8 Unicode text, with CRLF line terminators

コメント

タイトルとURLをコピーしました