文字コード変換

siteadministrator2020/01/05(日) - 17:44 に投稿

nkfを使用する

機能

  • 文字コード判定
  • 文字コード変換
  • 改行文字変換
  • 全角⇔半角変換
  • ひらがな⇔カタカナ変換

色々とオプションはあるのだが、よく使うものだけを示す。

USAGE:  nkf(nkf32,wnkf,nkf2) -[flags] [in file] .. [out file for -O flag]

変換先フラグ
変換先コードフラグ 変換先コード 説明
-j JIS 7 bit (DEFAULT) JISコード(ISO-2022-JP)
-s Shift JIS Shift-JISコード
-e EUC-JP EUCコード
-w UTF-8N UTF-8コード(BOM無し)
-w -w80 UTF-8N UTF-8コード(BOM無し)
-w8 UTF-8 UTF-8コード
-w16 -w16B0 UTF16 UTF16 コード(Big Endian / BOM 無し)
-w16B UTF16 UTF16 コード(Big Endian / BOM 有り)
-w16L UTF16 UTF16 コード(Little Endian / BOM 有り)
-w16L0 UTF16 UTF16 コード(Little Endian / BOM 無し)

表記上-"ハイフン"を付けた

変換元フラグ
変換先コードフラグ 変換先コード 説明
-J JIS 7 bit (DEFAULT) JISコード(ISO-2022-JP)
-S Shift JIS Shift-JISコード
-E EUC-JP EUCコード
-W UTF-8N UTF-8コード(BOM無し)
改行フラグ
改行コードフラグ 変換先コード 説明
-Lu LF UNIX
-Lw CRLF MS-DOS/Windows
-Lm CR Machintosh
その他フラグ
フラグ ヘルプ 説明
-g Guess the input code 文字コード自動判別
--overwrite Preserves timestamp of original files 元ファイルを変換データで上書き(いきなり使用しない方がよい)
--hiragana To Hiragana Conversion ひらがなへ変換(Shift_JISでは注意)
--katakana To Katakana Conversion カタカナへ変換(Shift_JISでは注意)

文字コード判別

nkf -g sample.txt

UTF-8に変更し、上書きする。

nkf -w --overwrite sample.csv

UTF-8且つ改行コードをLFに変更し、上書きする。(ワイルドカードを使用)

nkf -w -Lu --overwrite *.txt

iconvを使用する

対応文字コードを確認する。

iconv --list

変換方法は、

iconv -f 変換元コード -t 変換先コード 変換元ファイル > 変換先ファイル

変換元ファイルと変換先ファイルは別名にすること。

iconvはライブラリとして様々な言語、環境に移植されているが、バージョン?がいくつもあり、それぞれで対応文字コードが異なる。特にMicrosoft Windows上のPerl、Rubyの場合には気をつける。

汎用機用文字コード(EBCDIC:CP939)からUTF-8(unicode)へ変換する場合

iconv -f CP939 -t UTF-8 ebcdic_file.txt > utf8_file.txt

上記文字コードリストは、非常に多くの文字コードをリストアップしているが、一般的には規格制定変更により現実にはほとんど使用されていないものやエイリアスも多数ある(SHIFT_JISX0213等)ので注意が必要。

主なものとして

日本語 EUC UJIS
シフトJIS SJIS
JIS ISO-2022-JP
UNICODE UTF8
EBCDIC CP939

ただし、各文字コードには、拡張版等が多数存在するために対象のデータ内容の確認が必要である。特に汎用機(ホスト)系の文字コードはメーカー別で様々であり、英数字・カナでも異なるため、EBCDICだけでは表現しきれない。詳しくはここを参照のこと。

その他のコード変換ツールとして

dd、nkf等がある。