ミラクルリナックスの森山です。

IPA 2005年度下期オープンソースソフトウェア活用基盤整備事業のプロジェク
トとして採択された、「オープンソースソフトウェアにおける統一したレガ
シーエンコーディングの変換機能の開発」で、作成した、ruby 1.8.4 の NKF
モジュールの CP932, eucJP-ms, ISO-2022-JP-MS に対してユーザー定義文字
を追加するパッチを公開しました。

パッチファイル:
  ruby-1.8.4-nkf207-20061025.patch

テストフレームワーク:
  legacy-encoding-0.1.tar.gz

ダウンロード:
  以下の場所からダウンロードが可能です。
  http://sourceforge.jp/projects/legacy-encoding

このパッチを適用後の NKF モジュールの変換で、次のような問題がある事が
分かっています。

o eucJP-ms から cp932 への変換で、ユーザー定義文字が正しく変換されな
  い。(パッチに問題)
o 入力に cp51932、eucJP-ms を指定した場合に、0x1B を変換できない。
o 次の変換で、半角カナが全角のカタカナに変換されてしまう。
  --ic=cp932 --oc=cp50220 / --ic=cp51932 --oc=cp50220 /
  --ic=eucJP-ms --oc= cp50220 / --ic=cp50220 --oc=utf-8 /
  --ic=cp50221 --oc=utf-8 / --ic=iso-2022-jp-ms --oc=utf-8 /
  --ic=utf-8 --oc=utf-8
o 次の変換で、―〜‖−¢£¬ を正しく変換できない。
  --ic=cp50220 --oc=utf-8 / --ic=cp50221 --oc=utf-8
o UTF-8 から UTF-8 の変換で IBM拡張文字が正しく変換されない。
o UTF-8 から UTF-8 への変換を行なうと、次の文字のコードポイントが変更
  されてしまう。ただし、--no-best-fit-chars オプションを付ければコード
  ポイントの変更はされない。

       UTF-8                UTF-8
  ― 0xE28095 (U+2015) → 0xE28094 (U+2014)
  〜 0xEFBD9E (U+FF5E) → 0xE3809C (U+301C)
  ‖ 0xE288A5 (U+2225) → 0xE28096 (U+2016)
  − 0xEFBC8D (U+FF0D) → 0xE28892 (U+2212)
  ¢ 0xEFBFA0 (U+FFE0) → 0xC2A2   (U+00A2)
  £ 0xEFBFA1 (U+FFE1) → 0xC2A3   (U+00A3)
  ¬ 0xEFBFA2 (U+FFE2) → 0xC2AC   (U+00AC)

o 次の変換で、NEC選択IBM拡張文字をユーザー定義文字に変換してしまう。
  --ic=cp932 --oc=eucJP-ms / --ic=cp51932 --oc=eucJP-ms

--
森山 将之 moriyama / miraclelinux.com
ミラクル・リナックス株式会社