No.059 | 投稿日時: | 2003/04/19(土) 00:36 <↑親記事:No.058> |
投稿者: | 森山 将之 |
Java に限らない話となると、面倒ですね。
一般的な話なら、Shift_JIS(SJIS) と Windows-31J(MS932) の違いを理解しておけば、良いかもしれません。
Shift_JIS(SJIS) と Unicode のマッピングに unicode.org の JIS0208.TXT を用いている場合は、Windows-31J(MS932) との違いで問題になるのは、次の 6 文字になります。
__ [__] SJIS_ MS932
"〜" [8160] U301C UFF5E
"‖" [8161] U2016 U2225
"−" [817C] U2212 UFF0D
"¢" [8191] U00A2 UFFE0
"£" [8192] U00A3 UFFE1
"¬" [81CA] U00AC UFFE2
※GNU libiconv 1.8 の CP932 (Windows-31J) は、上記 6 文字に関して、Shift_JIS と同じマッピングになっていたりします…
Shift_JIS、Windows-31J とも、"―" [815C] は、U2015 と対応付けしていますが、JIS規格や Apple のシフトJIS では、U2014 に対応付けしています。
あと、Shift_JIS では、0x5C、0x7E に関して、次の 2 種類の対応付けが存在する可能性があります。( 実際の使用を考えると、(2) の対応付けの方が使いやすいですね。)
__[_]_(1)__(2)
"\" [5C] U00A5 U005C
"~" [7E] U203E U007E
Windows-31J に関しては、(2) の場合が、ほとんどと考えて良さそうな感じです。
Windows-31J のいわゆる機種依存文字に関しては、同じ文字が複数のコードポイントに割り当てられていたり、2 区の記号の一部が機種依存文字のコードポイントにも定義されていたりといった事も知っておくと、何か問題が生じたときに問題個所の特定の役に立つかもしれません。
重要なソフトの開発の際には、どのような実装になっているのか問題が出るまで分からないというのでは非常にマズイでしょうから、どのような実装になっているのか事前に確認するという事をした方が良いかもしれません。
> おまけですが、私の身近な例だとデータベースでOracleをよく使うのですが、これのSJISの実装"JA16SJIS"、バージョンによって文字集合が変わります。
なかなか面倒そうですね。
MS932 を IANA に登録されている Windows-31J で統一してくれるといいんですけどねぇ。