文字コード掲示板


記事表示


No.277投稿日時:2005/03/07(月) 01:02    <↑親記事:No.276>
投稿者:森山 将之

Re:MS系文字コードを今後どうするのか

まず、libiconv の本家へのマージに関してですが、他の方にもプッシュしてもらったのですが、あまり芳しくありませんでした。
私が英語で直接やり取りできれば、いろいろと打つ手はあるとは思うのですが、私が直接やりとりしていないため、こちらの意図を十分伝えきれていないのかなという感じです。

eucJP-msに関しては、すでに日本ベンダ協議会により作られたものだったので、それを利用できましたが、JISコード(ISO-2022-JP)に関しては、「XML日本語プロファイル」で、x-iso2022jp-cp932 というものがあるのですが、次の点がネックとなってしまっています。

----------------
参考 2 いったんシフトJIS又は日本語EUCを経由するからといっても, [IETF RFC 1468]が許していない文字が使用できるわけではない。たとえば,x-sjis-cp932は, NEC特殊文字, NEC選定IBM拡張文字, IBM拡張文字, ユーザ外字を表現できるが,x-iso2022jp-cp932がそれらの文字を表現できるわけでははない。
----------------

CP50220/CP50221/CP50222 のいずれかを実装する事も考えた事がありますが、ユーザー定義文字をエンコードできないとか、一般的にあまり実態が知られていないエンコーディングの為、イマイチだと感じています。

仕方が無いので、ISO-2022-JP-MS というものを独自に定義して実装する事を考えています。
iconv(3) では純粋にエンコーディング変換だけを行う事とし、NEC特殊文字, NEC選定IBM拡張文字は JIS X 0208 のエスケープシーケンス、JIS X 0201 片仮名は ESC ( I、ユーザー定義文字は ESC $ ( ? にしたいと考えています。
ESC $ ( ? は、JIS X 0202:1998 (ISO/IEC 2022:1994) の次の規定を利用します。

-----------------------
13.3.3 私用 どのエスケープシーケンスにおいても, 終端バイトの Fp (すなわち, 03 の列) は, 私用のため保留とする。私用のためのエスケープシーケンスは, ISO 2375 の登録対象外とする。これらは, 交換当事者間の合意によって定義する。
-----------------------

ISO-2022-JP-MS は、CP50220/CP50221を受け入れ可能で、CP50220/CP50221 では、考慮外のユーザー定義文字に関しても、ISO-2022-JP-MS の実装を行っていればやりとりが可能となります。

libiconv 用には、お試しパッチを作成してあり、glibc に関しては最近になって、実装を始めた所です。

Linux では、glibc を使っているので、日本語ロケール、iconv(3) での変換で SJIS/EUC-JP/ISO-2022-JP をMS系で統一する事も可能になってきます。

ただ、「Linux における日本語ロケールに関する指針」では次のような事も書かれていて、ja_JP.eucJP の実態を eucJP-ms にする事に対して、好ましい事ではないのかなとも考えてしまいます。

----------------------
補足: この文字コードの定義は「日本語 EUC」以外の文字コードの利用を
禁止するものではない。ユーザの設定により他の文字コードに切り換える
ことができた方が望ましい。あくまでも利便性のために、「文字コードと
して少なくとも日本語 EUC が利用できること」「デフォルトを日本語 EUC
にすること」を推奨するものである。また他の環境との互換性のため外字
を必要とする場合には ja_JP.eucJP ではなく別の名前を使用することが望
ましい。
----------------------

ただ ja_JP.eucJP ではない別の名前を使用するとなると、ロケール名を直接参照しているようなソフトの修正が必要となるなど、いろいろと面倒な事になるので、現実的ではないのではないかという印象を持っています。

個人的には、MS系文字コードで統一した環境を構築できるようにしたいと考えています。


Script : Sylpheed 1.24
Modified by MORIYAMA Masayuki