[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[webdav-jp:0811] libiconv 1.8 cp50220 追加



森山です。

一旦、スレッドを切らせてもらいます。

At Sat, 12 Jul 2003 23:33:52 +0900,
TAKAHASHI Motonobu さん:
> >cp932 → iso-2022-jp の変換を可能とする為のマッピングの追加が、
> >お気に召さなかったようですね。
> 
> そうですね。
> この点は、次にメールがきたら代替案を提示しようと思っていたのですが、そ
> れっきりになってしまいました。
> 
> |そうであれば、JIS系エンコーディングと MS系のエンコーディングを完
> |全に分離して、次のように直交性を持たせた方が合理的で良いのかなと
> |感じました。
> |
> |       CES       JIS系エンコーディング MS系エンコーディング
> |    ------------ --------------------- --------------------
> |     シフトJIS       Shift_JIS         cp932 (Microsoft)
> |     EUC             EUC-JP            eucJP-ms (TOG/JVC)
> |     RFC1468         ISO-2022-JP       cp50220 (Microsoft)
> 
> わたしもこれを考えていました。

最初に cp932 のパッチを作成した時には、Windows コードページ 
50220 があるという事を知りませんでしたので、やむを得ず 
ISO-2022-JP の方を修正していました。

> |libiconv 1.8 に上記のような修正・追加を行う、パッチを作って、

http://www2d.biglobe.ne.jp/~msyk/software/libiconv-1.8-cp932-family.html
に置きました。(cp932修正, eucJP-ms, cp50220 追加パッチです。)

上記パッチの cp50220 (RFC1468符号化方式) は、Windows の動作にあ
わせるために、特別な処理を入れ込んであります。

大きな所では、95区〜120区の処理に関してで、いろいろな MUA で、こ
の範囲にある文字を送ってみると、面白いエンコードの仕方をして送信
してくれます。
Windows コードページ 50220 では、それらを文字化けせずにデコード
出来ていましたので、それを真似てみました。

メジャーどころの MUA では、次のよう凶悪なエンコードになっていま
す。(この 2 つの方式(?)に対応してあります。)

  Outlook Express
  ・95区〜114区(ユーザー定義文字)に対しても、シフトJIS→JISコー
    ドの一般的な変換規則をそのまま適用してしまい、1バイト目のコー
    ド範囲が 0x7F〜0x92 になっている。

  Becky! Internet Mail
  ・95区(ユーザ定義文字)は、Outlook Express と同方式で、JISコー
    ドの 1バイト目が 0x7F になっている。
  ・96区〜119区(ユーザ定義文字、IBM拡張文字)は、シフトJISのまま
    残す。ただし8ビットコードは、SO/SI で挟んで MSB を落とし7ビッ
    トコード化。(なかなか、凝った(?)エンコードします)

この辺をサポートすると(一般ユーザーからしてみれば)実用的ではあり
ますが、外国の方への説明は厄介になりそうですから、次のように変更
したバージョンも作っておきました。

  cp50220 → Unicode の変換 (MUA での受信時の変換)
      Outlook Express (Windowsコードページ51932) や Becky!
      Internet Mail で送信されてくる、おかしなコードの救済を行わ
      ないようにする。

  Unicode → cp50220 の変換 (MUA での送信時の変換)
      いわゆる機種依存文字をエラーとするように変更。
      (cp50220 → Unicode の変換では機種依存文字を受け付けます)

      ※「XML 日本語プロファイル」x-iso2022jp-cp932 の説明を読む
        と、機種依存文字は使えないと書かれていました。

      TR X 0015:1999 XML日本語プロファイル
      http://www.y-adagio.com/public/standards/tr_xml_jpf/jpro.htm

      XML Japanese Profile W3C Note 14 April 2000 (英語)
      http://www.w3.org/TR/japanese-xml/ 

      Code-Page Identifiers (Windows のコードページ一覧?)
      http://msdn.microsoft.com/library/default.asp?url=/library/en-us/intl/unicode_81rn.asp

  エイリアスの変更
    EUCJP-MS EUCJP-OPEN EUCJP-WIN X-EUCJP-OPEN-19970715-MS
    CP932 MS932 SJIS-OPEN SJIS-WIN WINDOWS-31J X-SJIS-CP932
    CP50220 X-ISO2022JP-CP932

    # XML日本語プロファイルの X- 付きの正確な名称に従う事にしま
    # した。

  libiconv-1.8 への直接パッチ形式
    http://www2d.biglobe.ne.jp/~msyk/software/libiconv-1.8-cp932-family-2.diff.gz

  修正前の lib/cp50220.h
    http://www2d.biglobe.ne.jp/~msyk/software/libiconv-1.8/lib/cp50220.h.1.txt

  修正後の lib/cp50220.h
    http://www2d.biglobe.ne.jp/~msyk/software/libiconv-1.8/lib/cp50220.h.2.txt

# cp50220 の実装や mutt, vim への適用は、以前に済ませてあったの
# ですが、Unicode → cp50220 の変換で、ユーザ定義文字(私用領域)
# を、決め打ちで“〓”に変換していたので、出すのを保留していまし
# た。少し時間を置いて考えてみたら、やはり決め打ちで“〓”に変換
# するのは不味そうという気がしてきましたので、今回、ユーザー定義
# 文字を“〓”に変換せずに、エラーとするようにしました。

> 本当に、助かります。
> まったく、貢献できてなくてすみません。

いえいえ、私も高橋さんや宮本さん、吉山さんが英語でやりとりしてく
ださってくれて助けられています。ですので、そのように仰らないで下
さい。1人1人が出来る事を少しずつでもやって、ゆっくりでも問題を解
決していきましょう。私も微力ながら協力いたします。

‖ 森山 将之 (MORIYAMA, Masayuki) 
‖ E-Mail: msyk@xxxxxxxxxxxxxxxxx