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