[PHP-dev 1345] PHP への CP932 系エンコーディングの追加パッチ

MORIYAMA Masayuki moriyama @ miraclelinux.com
2006年 10月 27日 (金) 19:43:37 JST


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

IPA 2005年度下期オープンソースソフトウェア活用基盤整備事業のプロジェク
トとして採択された、「オープンソースソフトウェアにおける統一したレガ
シーエンコーディングの変換機能の開発」で、作成した、PHP 5.1.4 での文字
コード変換で CP51932、ISO-2022-JP-MS を使えるようにするパッチを公開し
ました。

パッチファイル:
  php-5.1.4-060825.patch

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

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

このパッチを適用する事により、次の事が実現されます。

1) Windows の機種依存文字をシフトJIS (SJIS-win)、日本語EUC (CP51932、
   eucJP-win)、7ビットJIS (ISO-2022-JP-MS) で扱えるようになります。

2) Windows 上で作成された Unicode とシフトJIS (SJIS-win)、日本語EUC
   (CP51932、eucJP-win)、7ビットJIS (ISO-2022-JP-MS) との間で変換可能
   になります。

   具体的には、次の文字の変換が可能になります。

   文字 SJIS     EUC      JIS       Unicode   Unicode での
         コード値 コード値 コード値  コード値  文字の名前
   ----- -------- -------- --------- --------  ----------------------
    ―    0x815C   0xA1BD   0x213D    U+2015    HORIZONTAL BAR
    〜    0x8160   0xA1C1   0x2141    U+FF5E    FULLWIDTH TILDE
    ‖    0x8161   0xA1C2   0x2142    U+2225    PARALLELE TO
    −    0x817C   0xA1DD   0x215D    U+FF0D    FULLWIDTH HYPHEN-MINUS
    ¢    0x8191   0xA1F1   0x2171    U+FFE0    FULLWIDTH CENT SIGN
    £    0x8192   0xA1F2   0x2172    U+FFE1    FULLWIDTH POUND SIGN
    ¬    0x81CA   0xA2CC   0x224C    U+FFE2    FULLWIDTH NOT SIGN

    上記の Unicode 値との変換を行なう為には、次のエンコーディングを用
    いる必要があります。

      SJIS -> SJIS-win
      EUC  -> CP51932 もしくは eucJP-win
      JIS  -> ISO-2022-JP-MS

追加を行なう各エンコーディングの概要は次の通りです。

CP51932 (Windows Codepage 51932)
--------------------------------
o Windows で使用されている日本語EUC。
o EUC-JP の JIS X 0212 およびユーザー定義文字には対応していない。
o 機種依存文字のコード割り当てが eucJP-win とは異なる。

ISO-2022-JP-MS
--------------
o ISO-2022-JP に次の文字集合を追加
    文字集合                                    エスケープシーケンス
    NEC特殊文字 (JIS X 0208 13区)               ESC $ B
    NEC選定IBM拡張文字 (JIS X 0208 89区〜92区)  ESC $ B
    JIS X 0201 片仮名                           ESC ( I
    ユーザー定義文字                            ESC $ ( ?
o Windows Codepage 50221 (Windows の 7ビットJISコード) とは、ユーザー
  定義文字を除いて互換性あり。

※ ISO-2022-JP-MS に関しては、今後、ユーザー定義文字の扱いに関しての
Windows との非互換を解消するために CP50221 (Windows Codepage 50221) に
変更する可能性があります。

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


PHP-dev メーリングリストの案内