WindowsやMacから送られてきた添付ファイルが文字化けして、読めない事象がありましすね。主な原因は文字コードが異なることで起こります。
また、現在のLinuxではUTF-8が主流ですが、EUC-JPを使っているシステムからファイルをコピーしてくると文字化けすることもあります。
今日はファイルの文字コードの確認方法と変換方法を紹介します。
文字コードの確認方法
fileコマンドで確認
file -i ファイル名
サンプル:
file -i Test.php
結果:
Test.php: text/x-php; charset=utf-8
サンプル:
file -i Test.php
結果:
Test.php: text/x-php; charset=utf-8
nkfコマンドで確認
nkf –guess ファイル名
サンプル:
nkf –guess Test.php
結果:
UTF-8 (LF)
サンプル:
nkf –guess Test.php
結果:
UTF-8 (LF)
文字コードの変換方法
iconvコマンドで変換する
フォーマット:
$ iconv -f <エンコーディング> -t <エンコーディング> <ファイル名>
$ iconv -f <エンコーディング> -t <エンコーディング> <ファイル名>
参考のオプションとしては以下が用意されています。
入力/出力形式の指定:
-f, –from-code=NAME 元のテキストのエンコーディング
-t, –to-code=NAME 出力用のエンコーディング
情報:
-l, –list
全ての既知の符号化された文字集合を一覧表示します
出力制御:
-c 出力から無効な文字を取り除く
-o, –output=FILE 出力ファイル
-s, –silent 警告を抑制する
–verbose 経過情報を表示する
-?, –help このヘルプ一覧を表示する
–usage 短い使用方法を表示する
-V, –version プログラムのバージョンを表示する
入力/出力形式の指定:
-f, –from-code=NAME 元のテキストのエンコーディング
-t, –to-code=NAME 出力用のエンコーディング
情報:
-l, –list
全ての既知の符号化された文字集合を一覧表示します
出力制御:
-c 出力から無効な文字を取り除く
-o, –output=FILE 出力ファイル
-s, –silent 警告を抑制する
–verbose 経過情報を表示する
-?, –help このヘルプ一覧を表示する
–usage 短い使用方法を表示する
-V, –version プログラムのバージョンを表示する
nkfコマンドで変換する
フォーマット:
nkf [オプション] <ファイルA> > <ファイルB>
nkf [オプション] <ファイルA> > <ファイルB>
サンプル:
nkf -w shift_jis.csv > utf-8.csv
nkf -w shift_jis.csv > utf-8.csv
参考のオプションとしては以下が用意されています。
-j : ISO-2022-JP に変換
-s : Shift_JIS に変換
-e : EUC-JP に変換
-w : UTF-8 に変換
–overwrite(上書きoption)
-j : ISO-2022-JP に変換
-s : Shift_JIS に変換
-e : EUC-JP に変換
-w : UTF-8 に変換
–overwrite(上書きoption)
vi/vimの場合
フォーマット:
:set fileencoding=文字コード
または
:set fenc=文字コード
:set fileencoding=文字コード
または
:set fenc=文字コード
エンコーディングには主に以下のものがあります
cp932
shift_jis
euc-jp
utf8
cp932
shift_jis
euc-jp
utf8
指定な文字コードでファイル内容を確認
フォーマット:
cat ファイル名 | nkf -u -w
※nkfのオプションは上部の内容を参照する
cat ファイル名 | nkf -u -w
※nkfのオプションは上部の内容を参照する
一括でファイルの文字コードを変換する
find . -name ‘*.htm’ -type f -print0 | xargs -0 nkf -u –overwrite -w
おすすめ本
ゼロからはじめるLinuxサーバー構築・運用ガイド 動かしながら学ぶWebサーバーの作り方
$ iconv -f SHIFT_JIS -t UTF-8 shift_jis.csv > utf-8.csv
または
$ iconv -f SHIFT_JIS -t UTF-8 shift_jis.csv -o utf-8.csv