ほとんど無害

123 : ◆lllllTqq9g :2007/08/24 22:54:13
あのあたりのIBM拡張文字とかをコード変換するときは色々と厄介なんだよねえ。
cp932からUCSへの変換の場合はUCSに対応する文字があるからまだいいんだけど、
euc-jpへ変換する場合、
・JIS X 0212 の文字集合に対応する文字として扱う (本来の euc-jp)
・JIS X 0212 の文字集合に対応する文字とそれ以外の文字に分けて扱う (eucjp-ms)
・JIS X 0213 の文字集合に対応する文字として扱う (euc-jisx0213)
・拡張文字をそのまま一つの文字集合として扱う (cp51932)
とか、これ以外にも細かい違いのものが色々あってなかなか酷い状況。
例えば、IEや大抵のWinアプリはeuc-jpというとcp51932であると想定してエンコード/デコードするけど、
別のOSのアプリではeuc-jpというと本来のeuc-jpと想定するものや、euc-jisx0213と想定するものなど
色々と統一がとれてないので、互換性の無い部分の文字を相互に読み書きすると化けてしまうことになる。

Jane系の場合はまた別の問題があって、これが使用している文字コード変換ライブラリ (jconvert.pas) の
sjis→euc-jp変換は、本来の Shift_JIS (IJS X 0208 の附属書1で規定されてるやつ) から euc-jp への
変換しか想定しておらず、cp932で拡張された部分の文字が含まれているととんでもないバイト列に
変換するものを使っているっぽい。
Jane派生の中にはこの問題に対処したものもあるっぽいけど、どれがそうなのかまでは分からず。
それを使えばIEから読み書きした場合と同じように扱えるかも。