Linux上で文字コードを変換するコマンドといえば、nkf
とiconv
の2つ。よく忘れるので備忘録がてらオプションと使い方をメモしておきます。
nkf
実行例1 - 出力する文字コードを指定
入力側の文字コードは自動で判定してくれますので、出力側の文字コードをオプションで指定します。
$ nkf -s foo.txt > foo_sjis.txt
$ cat foo.txt | nkf -s > foo_sjis.txt
オプション | 文字コード |
---|---|
-j | ISO-2022-JP |
-s | Shift_JIS |
-e | EUC-JP |
-w8 | UTF-8 (BOMあり) |
-w80 | UTF-8 (BOMなし) |
-w16 | UTF-16 BE (BOMあり) |
-w16B | 同上 |
-w16L | UTF-16 LE (BOMあり) |
実行例2 - 入力する文字コードも指定
自動判定がうまくいかない場合、オプションで指定することも可能です。出力時のオプションを大文字にしてやるだけです。
$ nkf -E -s foo.txt > foo_sjis.txt
$ cat foo.txt | nkf -E -s > foo_sjis.txt
オプション | 文字コード |
---|---|
-J | ISO-2022-JP |
-S | Shift_JIS |
-E | EUC-JP |
-W8 | UTF-8 |
-w16 | UTF-16 BE |
-w16B | 同上 |
-w16L | UTF-16 LE |
iconv
実行例
以下でUTF8のファイルを、シフトJISで出力します。
$ iconv -f UTF8 -t SJIS foo.txt > sjis.txt
対応している文字コード
-l
オプションで一覧を表示できます。
$ iconv -l
iconv -l | wc -l
すると141行ほど返ってきますので、対応している種類で言えばnkfを圧倒しますね。
例えば以下のような文字コードを指定することができます。
- UTF-8 UTF8
- UTF-16
- UTF-16BE
- UTF-16LE
- UTF-32
- UTF-32BE
- UTF-32LE
- JISX0201-1976 JIS_X0201 X0201 CSHALFWIDTHKATAKANA
- EUC-JP EUCJP EXTENDED_UNIX_CODE_PACKED_FORMAT_FOR_JAPANESE CSEUCPKDFMTJAPANESE
- MS_KANJI SHIFT-JIS SHIFT_JIS SJIS CSSHIFTJIS
- ISO-2022-JP CSISO2022JP
- ISO-2022-JP-1
- ISO-2022-JP-2 CSISO2022JP2
- EUC-JISX0213
- SHIFT_JISX0213
その他
nkfの開発者
余談ですが、nkfはもともと富士通の方が作成されていたんですね。知らんかったw
$ nkf -v Network Kanji Filter Version 2.1.4 (2015-12-12) Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa). Copyright (C) 1996-2015, The nkf Project.
関連
6日間で楽しく学ぶLinuxコマンドライン入門 コマンドの基本操作を身につけよう (ネット時代の、これから始めるプログラミング(NextPublishing))
posted with amazlet at 19.03.29
インプレスR&D (2015-04-24)
売り上げランキング: 3,945
売り上げランキング: 3,945