Linuxを利用している中で、日本語が文字化けしたときの対処方法を紹介します。「ファイルの文字コードを確認、変換する方法」「環境変数LANGを確認、変更する方法」について取り上げます。
目次
文字コード & 改行コードを確認
nkfコマンドで確認
nkf(Network Kanji Filter)コマンド
で、ファイルの 文字コード
を確認できます。
nkf -g ファイル名
$ nkf -g Vagrantfile
UTF-8
改行コード
も確認したい場合 --guessオプション
を利用します。
$ nkf --guess test.txt
Shift_JIS (CRLF)
補足|OSごとの改行コード
OS | 改行コード名 | 改行コード |
---|---|---|
Linux | LF | \n |
Mac(OSX以降) | LF | \n |
Mac(OS9まで) | CR | \r |
Windows | CR + LF | \r\n |
LF
はLine Feed
の略です(改行)。CR
はCarriage Return
の略です(復帰)。
参考
文字コード & 改行コードを変換
nkfコマンドで変換
# UTF-8に変換して上書き保存
nkf -w --overwrite 対象ファイル名
# UTF-8(LF)に変換して上書き保存
nkf -wd --overwrite 対象ファイル名
# Shift-JISに変換して上書き保存
nkf -s --overwrite 対象ファイル名
# Shift-JIS(CRLF)に変換して上書き保存
nkf -sc --overwrite 対象ファイル名
さらに、一括変換などの実用的な利用例を示します。
# .txtをまとめてUTF-8(LF)に変換して上書き保存
nkf -wd --overwrite *.txt
# カレントディレクトリ配下の全txtファイルの文字コードを一括変換
find . -type f -name "*.txt" -exec nkf -wd --overwrite {} \;
# 別ファイルで保存
nkf -wd 対象ファイル名 > 新規ファイル名
iconvコマンドで変換
iconvコマンドでも、ファイルの文字コードを変換できます。
iconv -f 変換元の文字コード -t 変換後の文字コード 対象ファイル名
$ nkf -g Vagrantfile
UTF-8
$
$ iconv -f UTF-8 -t SHIFT-JIS Vagrantfile > Vagrantfile_sjis
$
$ nkf -g Vagrantfile_sjis
Shift_JIS
環境変数LANGの確認
下記コマンドで環境変数LANGを確認できます。
$ env | grep LANG
LANG=en_US.UTF-8
環境変数LANGの変更
envで変更
$ env LANG="文字コード" コマンド
実行するコマンドにのみ、環境変数を一時的に設定できます。
※文字コード
- 日本語UTF-8であれば
ja_JP.UTF-8
と設定します。 - SJISであれば
ja_JP.SJIS
と設定します。
exportで変更
$ export LANG="文字コード"
ログイン中は変更されたままになります。ログオフすると元に戻ります。
デフォルト値を変更
ログオフしても元に戻らないようにするには、設定ファイル( /etc/sysconfig/i18n
)を修正します。
$ vi /etc/sysconfig/i18n