The Man Who Fell From The Wrong Side Of Sky:2009年5月14日分

2009/5/14(Thu)

今日

@

ウィキペの Microsoftコードページ932より

7. ^ IBMはマイクロソフトによる「CP932」の統合を受けて、「Windows-31J」と各文字のコードポイントまで
同一にした「CP943」を策定し、同社のOSであるOS/2、AIX、DBMSであるDB2などに搭載している。

これを読むと

 MS932 == IBM943
 MS932 != IBM932

ちゅうような整理をしたと読めるのだけど、Java6あたりの実装を調べると

 MS932 != IBM943

になっとるのだよな、つまり

  • IBMはコードページ932をMicrosoftのWindows-31Jのものと同一に変更した。
  • 旧来のIBMのコードページ932の変換表は新たにコードページ943とした。
  • 0x5C問題の回避に、YEN SIGNでなくREVERSE SOLIDUSに変更したコードページ943"C"も用意した。

という実装になっとるという。

んでおいらは当時Java厨だったので *1Citrusもこれに準じた実装になっとりやす、詳しくは これ嫁。
ちなみにGNU libiconvはどうやらCP932とCP943は同じ変換するもより、どうしたもんやら。

Java6で検証した変換表の相違点。

  • \x81\x5c
    • U+2014(EM DASH) … Shift_JIS, IBM943C
    • U+2015(HORIZONTAL BAR) … MS932, PCK
  • \x81\x60
    • U+301C(WAVE DASH) … Shift_JIS, PCK, IBM943C
    • U+FF5E(FULLWIDTH TILDE) … MS932
  • \x81\x61
    • U+2016(DOUBLE VERTICAL LINE) … Shift_JIS, PCK, IBM943C
    • U+2225(PARALLEL TO) … MS932
  • \x81\x7C
    • U+2212(MINUS SIGN) … Shift_JIS, PCK, IBM943C
    • U+FF0D(FULLWIDTH HYPHEN-MINUS) … MS932
  • \x81\x91
    • U+00A2(CENT SIGN) … Shift_JIS, PCK
    • U+FFE0(FULLWIDTH CENT SIGN) … MS932, IBM943C
  • \x81\x92
    • U+00A3(POUND SIGN) … Shift_JIS, PCK
    • U+FFE1(FULLWIDTH POUND SIGN) … MS932, IBM943C
  • \x81\xCA
    • U+00AC(NOT SIGN) … Shift_JIS, PCK
    • U+FFE2(FULLWIDTH NOT SIGN) … MS932, IBM943C
  • \xEE\xF9
    • N/A … Shift_JIS
    • U+3052(HIRAGANA LETTER GE) … PCK
    • U+FFE2(FULLWIDTH NOT SIGN) … MS932, IBM943
  • \xEE\xFA
    • N/A … Shift_JIS
    • U+00A6(BROKEN BAR) … PCK
    • U+FFE4(FULLWIDTH BROKEN BAR) … MS932, IBM943
  • \xFA\x54
    • N/A … Shift_JIS
    • U+3052(HIRAGANA LETTER GE) … PCK
    • U+FFE2(FULLWIDTH NOT SIGN) … MS932, IBM943
  • \xFA\x55
    • N/A … Shift_JIS
    • U+00A6(BROKEN BAR) … PCK
    • U+FFE4(FULLWIDTH BROKEN BAR) … MS932, IBM943
  • \xFA\x5B
    • N/A … Shift_JIS
    • U+306E(HIRAGANA LETTER NO) … PCK
    • U+2235(BECAUSE) … MS932, IBM943

あとPCKだけVDC(=Vendor Defined Character)をUnicodeの
PUA(=Private User Area)にはmapせず未割当なのよな。

@

「0x5c」と「0x7e」の文字について

「0x5c」と「0x7e」については、ASCIIともJIS X 0201とも違う文字が登録されている。
日本人の多くが「ASCII文字」と呼んでいるものは実は、「Windows-31J文字」である
ということも言われている。

違うよ。全然違うよ。
Windows-31Jの0x5CはREVERSE SOLIDUSであって、画面の表示がYEN SIGNなのは
フォントのグリフの問題だとMicrosoftはおっしゃっとりますがな、なにそれこわい。

*1:最近またJavaのお仕事に復帰しますた orz