LinuxはUTF8が普通になりました。EUC環境もまだまだ多く文字コード変換が必要になることもあります。
文字コード変換コマンド nkf。
使い方
nkf オプション ファイル [> 出力ファイル]
よく使うオプション
オプション一覧 -e : EUCコードを出力 -s : Shift-JISコードを出力 -w : UTF-8コードを出力(BOM無し) -g : 自動判別の結果を表示 --overwrite : 引数のファイルに直接上書き
覚え方 -w / -W 大文字小文字はペア。
入力は大文字、出力は小文字。sjis-> utf8なら、入力-S 出力 -w で -Sw。入力は自動判別で十分で余り使うことがないので最後に書いた。
使用例
文字コードチェック
nkf -g readme.txt
UTF8に変換
nkf -w --overwrite readme.txt nkf -g readme.txt #結果を確認
元の文字コードは自動判別 。ファイルを書き換える。元のファイルを変換して上書きします。
そのほかの使用例
元ファイルを残すときは --overwriteをつけない
EUC-JPに変換
nkf -e --overwrite readme.txt
Shift-JIS(cp932)に文字コード変換
nkf -s --overwrite readme.txt
utf8 に文字コード変換
nkf -w --overwrite readme.txt
複数ファイルをまとめて変換するサンプル
ディレクトリ内部のHTMLファイルをすべて文字コード変換する。
文字コード・改行を変換 →UTF-8/unix形式(LF)に変換
文字コードと改行をコードを合わせて変換できる。
$ nkf -w -Lu --overwrite *.html # *.htmlでまとめて変換
改行コード関連
-Lu : unix改行形式(LF)に変換 -Lw : windows改行形式(CRLF)に変換 -Lm : macintosh改行形式(CR)に変換
よくある間違い
$ nkf -w readme.txt > readme.txt
上書きできません。入力ファイルと出力ファイルが同じなので、うまくいきません。中身が空っぽになる。
- --overwriteオプション
- 別名で保存してmvコマンドで移動する。
オプション一覧
-j(省略可能) : JISコード(ISO-2022-JP)を出力 -e : EUCコードを出力 -s : Shift-JISコードを出力 -w : UTF-8コードを出力(BOM無し) -Lu : unix改行形式(LF)に変換 -Lw : windows改行形式(CRLF)に変換 -Lm : macintosh改行形式(CR)に変換 -g(--guess) : 自動判別の結果を表示 --overwrite : 引数のファイルに直接上書き --version : バージョン情報を表示
文字コードの判別がオカシイ時
入力されたエンコーディング判別が、間違っている時に、指定文字コードで強制的に読み込ませたい
```
nkf -S -w ## sjis として読み込んで utfで表示
```
大文字にすると、入力指定ができる。
-E : EUCコードを入力 -S : Shift-JISコードを入力 -W : UTF-8コードを入力
2017-06-14
いくつか追記
2018-07-27
関連資料を追加