[Gauche] nkfモジュール
動作環境
Ubuntu Linux 8.04, Guache 0.8.13で動作を確認しています。
使い方
以下のようにして使います。
(use nkf) (nkf '([<オプション>...]) <文字列>)
<オプション>は、nkfコマンドのオプションと同一です。リストの一要素に一つのオプションを指定します。
<文字列>は、変換される文字列です。
例えば、文字列"あいうえお"をUTF-8に変換したい場合、以下のようにします。
(use nkf) (nkf '("-w") "あいうえお")
注意
このモジュールは、スレッドセーフではありません。
雑記
Gaucheには、gauche.charconvモジュールが備わっているので、本来このようなモジュールを作る必要はなかったのですが、gauche.charconvモジュールでは対応できない状況にあったので、作成しました。
gauche.charconvモジュールでは対応できない状況というのは、ひとつのファイルの中に複数の文字コードが含まれている、という場合です。具体的には、以下のページが該当します。
- COMIC1詳細 - *apricot days* (http://blog.goo.ne.jp/aokiume/e/5c28a2ff36cec5182563d7f3068f6ef7)
このページは(ヘッダの<meta>タグに書いてある通り)、EUC-JPで書かれていますが、コメント(HTMLのコメントではなくて、日記に対するコメントです)を見ると一部がShift-JISになっています(多分、ページがEUC-JPにも関わらずブラウザがShift-JISでコメントを送信し、それがそのままデータベースに入ったものと思われます)。このページをhttp-getした後、gauche.charconvモジュールでUTF-8に変換しようとしたのですが、Shift-JISになっている部分が変換できず、エラーになりました。nkfだとEUC-JPで書かれている部分もShift-JISで書かれている部分もUTF-8に変換できたので、nkfをモジュール化しました。