文字コードの変換(nkfを利用して)
2010/11/23
私がずっと前から利用しているのはnkfという非常に古い(どのくらい古いのかも私は知りません)プログラム.
古いというのは,信頼性が高いということでもあるので,気にする必要はない.
Debianでもパッケージ化されているし(最初に入っていたかはわからない).
何かプログラムに組み込んで使うならiconvというやつも良いと思う.
簡単に文字コードとは
文字コードとは,文字とバイト表現の対応関係のこと.例えばアルファベットの「A」はASCII文字コードでは,16進数の「0x41」*1というバイト表現に置き換えている(正確で詳細な情報はリンク先をどうぞ).
このような文字とバイト表現の対応はOSやプログラムといった環境によって異なる.
基本的に日本語文字コードは,Linux環境ではEUC-JPかUTF-8,Windows環境ではShift-JISというものが使われている.
使用している環境と異なる文字コードで記述されたテキストファイルをエディタで開くと,
文字コード変換機能が搭載されていないエディタでは,文字化けを起こす.
環境と異なる文字コードのファイルを扱うことは不都合も多い.
よって何らかの方法で文字コードを変換することが必要となる.
ここで紹介する方法は上述の通りnkfというプログラムを使った方法である.
対応文字コードは,EUC-JP,UTF-8,Shift-JIS,ISO-2022-JP,UTF-16である.
インストール方法
Linux(Debian)
aptitudeでインストール可能であるので特に問題ない.Windows
リンク先からプログラムをダウンロードし,適当なフォルダに置く.そして,環境変数を設定すれば普通に利用可能である(コマンドプロンプト上で.).
使い方はLinuxのものと変わりない.
Shif-JISをEUC-JPに変換
次のようにたたく.ushi@BigOwl:~$ nkf -eLu --overwrite filenameこうすると,filenemeにEUC-JP(eオプション)で行末がUNIX形式(Luオプション)の文字コードへ変換された結果が上書きされる.
万に一つくらいは失敗するかもしれないが,ファイル数は増えないので扱いは楽である.
なお,nkfは入力ファイルの文字コードを自動検出してくれるので,これ以上のオプションは必要ない.
(Shift-JIS以外に,UTF-8やISO-2022-JPであっても問題ないです.)
自動検出は普通は失敗しないが,可能性はゼロではないらしい.
もし,上書きせずに別のファイルに出力したければ,以下のようにすればいいと思う.
ushi@BigOwl:~$ nkf -eLu inputfilename > outputfilename
EUC-JPをShift-JISに変換
同様にushi@BigOwl:~$ nkf -sLw --overwrite filename
UTF-8に変換
同様にushi@BigOwl:~$ nkf -w8Lu --overwrite filenameで問題ないはず.
詳しくは,次のmanページをどうぞ.2種類の文字が欠けている可能性がありますが…….
nkf-ja.pdf