日本語の文字コードには、いくつかの種類がありますが、多く使われているのは次の3つです。
Windowsで日本語の文章を書いた場合、標準では文字コードがShiftJIS(SJIS)になっています。しかし、UNIXやLinuxでは標準ではEUCを使っており、メールではJISを使います。このように日本語の文字コードは使われる環境によって標準が異なっています。
UNIXで作った日本語文書をWindowsに転送してメモ帳で開いてみると、文字化けして読めないといったような経験がある方もいらっしゃると思います。このような問題を解決するために、UNIX/Linuxにはnkfという文字コードを変換するツールが付属しています。
nkfは次のように使います。
$ nkf [-e][-j][-s] file-name
オプションは次の通りです。
nkfはファイルの文字コードを変換してモニターに出力するので、次のようにリダイレクトしてファイルに出力するようにします。
$ nkf -s test.txt > test_conv.txt
これで、test.txtの内容がSJISに変換されて、test_conv.txtに書き込まれます。注意点は、変換したいファイルと同じ名前のファイルを出力先ファイル名にしないようにしてください。これをやるとファイルの中身が消えてしまいます。
文字コードと同様に、改行コードもOSによって異なっています。メジャーなOSと改行コードの関係は次のようになっています。
上記のように、Windowsでは改行コードにLFとCRの2つを使用しており、UNIXではLFのみを使用しています。改行コードの変換もオプションを選択することで、nkfで行うことができます。
例として、Windowsで作られたtest.txtをUNIXで使えるようにするには、次のようにします。
$ nkf -e -Lu test.txt > test_conv.txt