日本語漢字コードコンバータ


qkcというプ ログラムがあります。基本的にはnkfで済む話なのです が、インターフェイスが気に入ってよく使っていました。しかし、qkcには大 きな欠点があります。それはUTF-8に対応してないこと。

というわけでUTF-8対応版を作ろうと思い立ったのですが、perlで書けば一 瞬でできあがるものを、何を考えたかrubyを使って書こうと思ってしまいまし た……。

ダウンロード

使い方

make, make installして、nkc -h を実行してください。以下のような usageが出るはずです。

$ nkc -h
usage: nkc [-e|-j|-s|-w] [any options] file1 file2 file3....

-e      convert to EUC-JP
-j      convert to ISO-2022-JP(JIS)
-s      convert to Shift_JIS
-w      convert to UTF-8
-m      convert to CR+LF(DOS) newline code
-u      convert to LF(UNIX) newline code
-M      convert to CR(MAC) newline code
--help  show this message.

nkcは引数に与えられたファイルを直接書き換えてしまいますので、注意し てください。

ライセンス

著作権は放棄します。Public Domain として扱ってください。また、完全 に無保証です。何があっても作者は責任を取りません。

与太話

libncode

まず、現在(2004年7月)のrubyで絶望的なのは、NKFがUTF-8に対応してない ということです。iconvのラッパーはあるのですが、これは入力文字コードと 出力文字コードをきちんと指定してやらなければなりません。つまり、まず入 力文字コードが何であるかを別途把握する必要があるのです。

しょうがないので、 日本語文字コードの判別というページや、perlのJcode.pmのソースを参考 に、自前で判別ルーチンを書いてみました。添付のlibncode.rbがそれです。

require 'libncode.rb'
code = Ncode::ncode(str)
とやってやれば、strに入ってる文字列の文字コードが何か、codeに入るはず です。

なにせrubyを使うのはホントに初めてですし、文字コードについて勉強し たもの今回が初めてみたいなものですので、精度は悪いかもしれません。とり あえず手元のテキストファイルを数百個試してみましたが、誤検出したものは ありませんでした。でも半角カナとかだけで構成されたものとかはほぼ間違い なく化けると思います。

しかし、昨今blogなどの潮流でUTF-8を使う機会は増えてると思うのですが、 世のruby使いたちはどうやってUTF-8を判別してるんでしょうね……。

perlなら一瞬

当り前ですが、こんなものperlならすぐ作れます。Encode/Decodeがありま すし、文字コードの判別もやってもらえます。シェルスクリプトでもUTF-8対 応のnkfがあるのでけっこうすぐ作れちゃうでしょうね。rubyなんぞで書こう と思った自分はマゾっ気があるのか、それとも暇人なのか……

ToDo

どれもいつになったらやるのかは知りません。


Sugano "狐志庵" Yoshihisa(E) <koshian@misao.gr.jp>
Back to HOME