JIS記号の UCS BMP へのマッピングの問題および MS漢字とシフトJISの違い

異なる時期に書いた文章をまとめたので, 大文字と小文字ほか体裁が不統一ですが, 我慢してください。

伊藤隆幸氏のページが やはり記号のマッピングの問題を扱っています。


目次:

  1. cp932 と SHIFT_JIS の違い
  2. cp932 の全角・半角の関係
  3. WideCharToMultiByte の特殊処理
  4. バージョンによる違い


cp932 と SHIFT_JIS の違い

UCS(Unicode)との対応関係で見ると, マイクロソフトの コードページ 932 (以下 cp932 と簡称) は SHIFT_JIS (JIS X 0208 を単純に「シフト」したものとしての) とは別物であると考えた方がよい。
Unicode の FTP にたいへん便利なコード表(テキストファイル)があるので それを参照してもらうとわかる。

上の2つを比べると, Microsoft は文字を追加しているほかに 以下の 10個所に違いがあることがわかる。

Hex Code cp932 to UCS SHIFT_JIS to UCS
5C 005C (Reverse Solidus) 00A5 (Yen Sign)
7E 007E (Tilde) 203E (Overline)
815C 2015 (Horizontal Bar) 2014 (Em Dash)
815F FF3C (Fullwidth Reverse Solidus)005C (Reverse Solidus)
8160 FF5E (Fullwidth Tilde) 301C (Wave Dash)
8161 2225 (Parallel To) 2016 (Double Vertical Line)
817C FF0D (Fullwidth Hyphen-Minus) 2212 (Minus Sign)
8191 FFE0 (Fullwidth Cent Sign) 00A2 (Cent Sign)
8192 FFE1 (Fullwidth Pound Sign) 00A3 (Pound Sign)
81CA FFE2 (Fullwidth Not Sign) 00AC (Not Sign)

注意点:

  1. cp932 の 5C が Yen sign (U:00A5) でなく Reverse Solidus (U:005C) になっている。 このため, cp932 には FULLWIDTH でないただの円記号がなくなってしまっている。
  2. 815F が Fullwidth variant になっているのは上記 5C とのからみで理解できるが, 8191, 8192, 81CA が Fullwidth になっているのは理解しがたい。 IBM の拡張と関係があるのか? それとも MBCS と結び付ける時に Fullwidth variant が存在するものについては なるべくそっちを使おうとしたのか?
  3. HotJava や NetScape の一部の版で「〜」や「−」 が正しく表示されないといって問題になったことがあったが, このへんの違いを考慮せずにプログラムが作られていたためと考えられる。

cp932 の制御記号(00-1F,7F,80) はそのまま 0000-001F,007F,0080 に変換される。

cp932 で追加された文字には以下のものがある。

  1. NEC 拡張記号 83文字(8740-879C)
    注意:
    1. 875E, 8776-877D は未定義。
    2. NEC は, 罫線や2バイト半角文字など, ほかにも文字を定義しているが, MS の cp932 にこれらの文字は含まれていない。
  2. NEC 拡張漢字 374文字(ED40-EEFC)
    注意:
    1. EEED, EEEF は未定義。
    2. IBM 拡張漢字 388文字のうち, 87XX に定義ずみの 14字を除いたものを別な領域にマップしなおしたもの。
  3. IBM 拡張漢字 388文字(FA40-FC4B)
  4. ユーザー定義文字 1880文字(F040-F9FC)
    注意:
    1. これらの文字は PUA (Private Use Area)の E000-E757 に map される。
    2. MultiByteToWideChar で MB_ERR_INVALID_CHARS フラグを指定すると, これらの文字を使った時にエラーになる。
  5. SBCS の未定義領域 4 文字(A0,FD,FE,FF)
    注意:
    1. これらの文字は PUA (Private Use Area)の F8F0-F8F3 に map される。
    2. MultiByteToWideChar で MB_ERR_INVALID_CHARS フラグを指定すると, これらの文字を使った時にエラーになる。

文字を追加した結果, まったく同じ UCS に対応するマルチバイト文字が 2個ないし 3個存在する場合がある。

例: UCS FFE2 (fullwidth not sign) に対応する cp932 コードは 81CA, EEF9, FA54 の 3個存在する。
この場合 WideCharToMultiByte は 1.本来のJISのコード→2.NEC拡張記号→3.IBM拡張漢字→4.NEC拡張漢字 で優先順位をつけて文字を対応づける。

NEC と IBM の拡張文字を単純に合計すると 83+374+388=845字だが, 重複文字があるために, 実質的に 447字(非漢字 87, 漢字 360) の追加になっている。

追加文字一覧(非漢字)
UCS JIS IBM EXT. NEC EXT.
2116 NUMERO SIGN****fa598782
2121 TELEPHONE SIGN****fa5a8784
2160 ROMAN NUMERAL ONE****fa4a8754
2161 ROMAN NUMERAL TWO****fa4b8755
2162 ROMAN NUMERAL THREE****fa4c8756
2163 ROMAN NUMERAL FOUR****fa4d8757
2164 ROMAN NUMERAL FIVE****fa4e8758
2165 ROMAN NUMERAL SIX****fa4f8759
2166 ROMAN NUMERAL SEVEN****fa50875a
2167 ROMAN NUMERAL EIGHT****fa51875b
2168 ROMAN NUMERAL NINE****fa52875c
2169 ROMAN NUMERAL TEN****fa53875d
2170 SMALL ROMAN NUMERAL ONE****fa40eeef
2171 SMALL ROMAN NUMERAL TWO****fa41eef0
2172 SMALL ROMAN NUMERAL THREE****fa42eef1
2173 SMALL ROMAN NUMERAL FOUR****fa43eef2
2174 SMALL ROMAN NUMERAL FIVE****fa44eef3
2175 SMALL ROMAN NUMERAL SIX****fa45eef4
2176 SMALL ROMAN NUMERAL SEVEN****fa46eef5
2177 SMALL ROMAN NUMERAL EIGHT****fa47eef6
2178 SMALL ROMAN NUMERAL NINE****fa48eef7
2179 SMALL ROMAN NUMERAL TEN****fa49eef8
2211 N-ARY SUMMATION********8794
221a SQUARE ROOT81e3****8795
221f RIGHT ANGLE********8798
2220 ANGLE81da****8797
2229 INTERSECTION81bf****879b
222a UNION81be****879c
222b INTEGRAL81e7****8792
222e CONTOUR INTEGRAL********8793
2235 BECAUSE81e6fa5b879a
2252 APPROXIMATELY EQUAL TO OR THE IMAGE OF81e0****8790
2261 IDENTICAL TO81df****8791
22a5 UP TACK81db****8796
22bf RIGHT TRIANGLE********8799
2460 CIRCLED DIGIT ONE********8740
2461 CIRCLED DIGIT TWO********8741
2462 CIRCLED DIGIT THREE********8742
2463 CIRCLED DIGIT FOUR********8743
2464 CIRCLED DIGIT FIVE********8744
2465 CIRCLED DIGIT SIX********8745
2466 CIRCLED DIGIT SEVEN********8746
2467 CIRCLED DIGIT EIGHT********8747
2468 CIRCLED DIGIT NINE********8748
2469 CIRCLED NUMBER TEN********8749
246a CIRCLED NUMBER ELEVEN********874a
246b CIRCLED NUMBER TWELVE********874b
246c CIRCLED NUMBER THIRTEEN********874c
246d CIRCLED NUMBER FOURTEEN********874d
246e CIRCLED NUMBER FIFTEEN********874e
246f CIRCLED NUMBER SIXTEEN********874f
2470 CIRCLED NUMBER SEVENTEEN********8750
2471 CIRCLED NUMBER EIGHTEEN********8751
2472 CIRCLED NUMBER NINETEEN********8752
2473 CIRCLED NUMBER TWENTY********8753
301d REVERSED DOUBLE PRIME QUOTATION MARK********8780
301f LOW DOUBLE PRIME QUOTATION MARK********8781
3231 PARENTHESIZED IDEOGRAPH STOCK****fa58878a
3232 PARENTHESIZED IDEOGRAPH HAVE********878b
3239 PARENTHESIZED IDEOGRAPH REPRESENT********878c
32a4 CIRCLED IDEOGRAPH HIGH********8785
32a5 CIRCLED IDEOGRAPH CENTRE********8786
32a6 CIRCLED IDEOGRAPH LOW********8787
32a7 CIRCLED IDEOGRAPH LEFT********8788
32a8 CIRCLED IDEOGRAPH RIGHT********8789
3303 SQUARE AARU********8765
330d SQUARE KARORII********8769
3314 SQUARE KIRO********8760
3318 SQUARE GURAMU********8763
3322 SQUARE SENTI********8761
3323 SQUARE SENTO********876b
3326 SQUARE DORU********876a
3327 SQUARE TON********8764
332b SQUARE PAASENTO********876c
3336 SQUARE HEKUTAARU********8766
333b SQUARE PEEZI********876e
3349 SQUARE MIRI********875f
334a SQUARE MIRIBAARU********876d
334d SQUARE MEETORU********8762
3351 SQUARE RITTORU********8767
3357 SQUARE WATTO********8768
337b SQUARE ERA NAME HEISEI********877e
337c SQUARE ERA NAME SYOUWA********878f
337d SQUARE ERA NAME TAISYOU********878e
337e SQUARE ERA NAME MEIZI********878d
338e SQUARE MG********8772
338f SQUARE KG********8773
339c SQUARE MM********876f
339d SQUARE CM********8770
339e SQUARE KM********8771
33a1 SQUARE M SQUARED********8775
33c4 SQUARE CC********8774
33cd SQUARE KK********8783
ff02 FULLWIDTH QUOTATION MARK****fa57eefc
ff07 FULLWIDTH APOSTROPHE****fa56eefb
ffe2 FULLWIDTH NOT SIGN81cafa54eef9
ffe4 FULLWIDTH BROKEN BAR****fa55eefa

追加文字一覧(漢字)
UCS IBM EXT. NEC EXT.
4e28 fa68ed4c
4ee1 fa69ed4d
4efc fa6aed4e
4f00 fa6bed4f
4f03 fa6ced50
4f39 fa6ded51
4f56 fa6eed52
4f8a fa70ed54
4f92 fa6fed53
4f94 fa72ed56
4f9a fa71ed55
4fc9 fa61ed45
4fcd fa73ed57
4fff fa76ed5a
501e fa77ed5b
5022 fa75ed59
5040 fa74ed58
5042 fa7aed5e
5046 fa78ed5c
5070 fa79ed5d
5094 fa7bed5f
50d8 fa7ded61
50f4 fa7ced60
514a fa7eed62
5164 fa80ed63
519d fa81ed64
51be fa82ed65
51ec fa83ed66
5215 fa84ed67
529c fa85ed68
52a6 fa86ed69
52af fb77ee5b
52c0 fa87ed6a
52db fa88ed6b
5300 fa89ed6c
5307 fa8aed6d
5324 fa8bed6e
5372 fa8ced6f
5393 fa8ded70
53b2 fa8eed71
53dd fa8fed72
548a fa92ed75
549c fa91ed74
54a9 fa93ed76
54ff fa94ed77
5586 fa95ed78
5759 fa96ed79
5765 fa97ed7a
57ac fa98ed7b
57c7 fa9aed7d
57c8 fa99ed7c
589e fa9ded81
58b2 fa9eed82
590b fa9fed83
5953 faa0ed84
595b faa1ed85
595d faa2ed86
5963 faa3ed87
59a4 faa4ed88
59ba faa5ed89
5b56 faa6ed8a
5bc0 faa7ed8b
5bd8 faa9ed8d
5bec faaaed8e
5c1e faabed8f
5ca6 faaced90
5cba faaded91
5cf5 faaeed92
5d27 faafed93
5d42 fab2ed96
5d53 fab0ed94
5d6d fab3ed97
5db8 fab4ed98
5db9 fab5ed99
5dd0 fab6ed9a
5f21 fab7ed9b
5f34 fab8ed9c
5f45 fa67ed4b
5f67 fab9ed9d
5fb7 fabaed9e
5fde fabbed9f
605d fabceda0
6085 fabdeda1
608a fabeeda2
60d5 fac0eda4
60de fabfeda3
60f2 fac2eda6
6111 fac3eda7
6120 fac1eda5
6130 fac5eda9
6137 fac4eda8
6198 fac6edaa
6213 fac7edab
62a6 fac8edac
63f5 fac9edad
6460 facaedae
649d facbedaf
64ce faccedb0
654e facdedb1
6600 faceedb2
6609 fad1edb5
6615 facfedb3
661e fad3edb7
6624 fad4edb8
662e fad2edb6
6631 fa63ed47
663b fad0edb4
6657 fad6edba
6659 fad7edbb
6665 fad5edb9
6673 fad9edbd
6699 fadaedbe
66a0 fadbedbf
66b2 fadcedc0
66bf faddedc1
66fa fadeedc2
66fb fa66ed4a
670e fadfedc3
6766 fae1edc5
67bb fae2edc6
67c0 fae4edc8
6801 fae5edc9
6844 fae6edca
6852 fae3edc7
68c8 fa64ed48
68cf fae7edcb
6968 fae9edcd
6998 faebedcf
69e2 faecedd0
6a30 faededd1
6a46 faefedd3
6a6b faeeedd2
6a73 faf0edd4
6a7e faf1edd5
6ae2 faf2edd6
6ae4 faf3edd7
6bd6 faf4edd8
6c3f faf5edd9
6c5c faf6edda
6c6f faf8eddc
6c86 faf7eddb
6cda faf9eddd
6d04 fafaedde
6d6f fafcede0
6d87 fafbeddf
6d96 fb40ede1
6dac fb41ede2
6dcf fb42ede3
6df2 fb44ede5
6df8 fb43ede4
6dfc fb45ede6
6e27 fb48ede9
6e39 fb46ede7
6e3c fb49edea
6e5c fb47ede8
6ebf fb4aedeb
6f88 fb4bedec
6fb5 fb4ceded
6ff5 fb4dedee
7005 fb4eedef
7007 fb4fedf0
7028 fb50edf1
7085 fb51edf2
70ab fb52edf3
70bb fa62ed46
7104 fb54edf5
710f fb53edf4
7146 fb56edf7
7147 fb57edf8
715c fb55edf6
71c1 fb59edfa
71fe fb5aedfb
72b1 fb5bedfc
72be fb5cee40
7324 fb5dee41
7377 fb5fee43
73bd fb60ee44
73c9 fb61ee45
73d2 fb64ee48
73d6 fb62ee46
73e3 fb63ee47
73f5 fb66ee4a
7407 fb65ee49
7426 fb67ee4b
7429 fb69ee4d
742a fb68ee4c
742e fb6aee4e
7462 fb6bee4f
7489 fb6cee50
749f fb6dee51
7501 fb6eee52
752f faa8ed8c
756f fb6fee53
7682 fb70ee54
769b fb73ee57
769c fb71ee55
769e fb72ee56
76a6 fb74ee58
7746 fb76ee5a
7821 fb78ee5c
784e fb79ee5d
7864 fb7aee5e
787a fb7bee5f
7930 fb7cee60
7994 fb81ee64
799b fb83ee66
7ad1 fb84ee67
7ae7 fb85ee68
7aeb fb87ee6a
7b9e fb88ee6b
7d48 fb8aee6d
7d5c fb8bee6e
7da0 fb8dee70
7db7 fb8cee6f
7dd6 fb8eee71
7e52 fb8fee72
7e8a fa5ced40
7f47 fb90ee73
7fa1 fb91ee74
8301 fb93ee76
8362 fb94ee77
837f fb95ee78
83c7 fb96ee79
83f6 fb97ee7a
8448 fb98ee7b
84b4 fb99ee7c
84dc fa60ed44
8553 fb9aee7d
8559 fb9bee7e
856b fb9cee80
85b0 fb9eee82
8807 fba1ee85
88f5 fba2ee86
891c fa5ded41
8a12 fba3ee87
8a37 fba4ee88
8a79 fba5ee89
8aa7 fba6ee8a
8abe fba7ee8b
8adf fba8ee8c
8af6 fbaaee8e
8b53 fbabee8f
8b7f fbacee90
8cf0 fbadee91
8cf4 fbaeee92
8d12 fbafee93
8d76 fbb0ee94
8ecf fbb2ee96
9067 fbb5ee99
90de fbb6ee9a
9115 fbb8ee9c
9127 fbb9ee9d
91d7 fbbbee9f
91da fbbaee9e
91de fbbceea0
91e4 fbbfeea3
91e5 fbc0eea4
91ed fbbdeea1
91ee fbbeeea2
9206 fbc1eea5
920a fbc3eea7
9210 fbc2eea6
9239 fbcaeeae
923a fbc4eea8
923c fbc6eeaa
9240 fbc5eea9
924e fbc7eeab
9251 fbc9eead
9259 fbc8eeac
9267 fbcbeeaf
9277 fbcdeeb1
9278 fbceeeb2
9288 fa5fed43
92a7 fbcceeb0
92d0 fbd2eeb6
92d3 fbd6eeba
92d5 fbd4eeb8
92d7 fbd0eeb4
92d9 fbd1eeb5
92e0 fbd5eeb9
92e7 fbcfeeb3
92f9 fa65ed49
92fb fbd9eebd
92ff fbdceec0
9302 fbdeeec2
931d fbddeec1
931e fbdbeebf
9321 fbd8eebc
9325 fbd7eebb
9348 fa5eed42
9357 fbe0eec4
9370 fbdfeec3
93a4 fbe1eec5
93c6 fbe2eec6
93de fbe3eec7
93f8 fbe4eec8
9431 fbe5eec9
9445 fbe6eeca
9448 fbe7eecb
9592 fbe8eecc
969d fbebeecf
96af fbeceed0
9733 fbedeed1
973b fbeeeed2
9743 fbefeed3
974d fbf0eed4
974f fbf1eed5
9751 fbf2eed6
9755 fbf3eed7
9857 fbf4eed8
9865 fbf5eed9
9927 fbf8eedc
999e fbfaeede
9a4e fbfbeedf
9ad9 fbfceee0
9adc fc40eee1
9b72 fc42eee3
9b75 fc41eee2
9b8f fc43eee4
9bb1 fc44eee5
9bbb fc45eee6
9c00 fc46eee7
9d6b fc48eee9
9d70 fc47eee8
9e19 fc4aeeeb
9ed1 fc4beeec
f929 fae0edc4
f9dc fbe9eecd
fa0e fa90ed73
fa0f fa9bed7e
fa10 fa9ced80
fa11 fab1ed95
fa12 fad8edbc
fa13 fae8edcc
fa14 faeaedce
fa15 fb58edf9
fa16 fb5eee42
fa17 fb75ee59
fa18 fb7dee61
fa19 fb7eee62
fa1a fb80ee63
fa1b fb82ee65
fa1c fb86ee69
fa1d fb89ee6c
fa1e fb92ee75
fa1f fb9dee81
fa20 fb9fee83
fa21 fba0ee84
fa22 fba9ee8d
fa23 fbb1ee95
fa24 fbb3ee97
fa25 fbb4ee98
fa26 fbb7ee9b
fa27 fbd3eeb7
fa28 fbdaeebe
fa29 fbeaeece
fa2a fbf6eeda
fa2b fbf7eedb
fa2c fbf9eedd
fa2d fc49eeea


cp932 の全角・半角の関係

下の表のうち, 太字で書いた MBCS 番号は cp932 固有のものである。

表1. FULLWIDTH VARIANT がある記号
UCS NORMAL FULLWIDTH
0021(FF01)exclamation mark21 8149
0022(FF02)quotation mark 22 EEFC
FA57
0023(FF03)number sign 23 8194
0024(FF04)dollar sign 24 8190
0025(FF05)percent sign 25 8193
0026(FF06)ampersand 26 8195
0027(FF07)apostrophe 27 EEFB
FA56
0028(FF08)left parenthesis28 8169
0029(FF09)right parenthesis29 816A
002A(FF0A)asterisk 2A 8196
002B(FF0B)plus sign 2B 817B
002C(FF0C)comma 2C 8143
002D(FF0D)minus sign 2D 817C
002E(FF0E)full stop 2E 8144
002F(FF0F)solidus 2F 815E
003A(FF1A)colon 3A 8146
003B(FF1B)semi colon 3B 8147
003C(FF1C)less-than sign 3C 8183
003D(FF1D)equals sign 3D 8181
003E(FF1E)greater-than sign3E 8184
003F(FF1F)question mark 3F 8148
0040(FF20)commercial at 40 8197
005B(FF3B)left square bracket5B 816D
005C(FF3C)reverse solidus 5C 815F
005D(FF3D)right square bracket5D 816E
005E(FF3E)circumflex accent5E 814F
005F(FF3F)low line 5F 8151
0060(FF40)grave accent 60 814D
007B(FF5B)left curly bracket7B 816F
007C(FF5C)vertical line 7C 8162
007D(FF5D)right curly bracket7D 8170
007E(FF5E)tilde 7E 8160
00A2(FFE0)cent sign --- 8191
00A3(FFE1)pound sign --- 8192
00A5(FFE5)yen sign --- 818F
00A6(FFE4)broken bar --- EEFA
FA55
00AC(FFE2)not sign --- 81CA
EEF9
FA54
00AF(FFE3)macron --- 8150

表2. Fullwidth Variant のある英数字
UCS NORMAL FULLWIDTH
0030(ff10)digit zero30 824f
0031(ff11)digit one31 8250
0032(ff12)digit two32 8251
0033(ff13)digit three33 8252
0034(ff14)digit four34 8253
0035(ff15)digit five35 8254
0036(ff16)digit six36 8255
0037(ff17)digit seven37 8256
0038(ff18)digit eight38 8257
0039(ff19)digit nine39 8258
0041(ff21)latin captital letter A41 8260
0042(ff22)latin captital letter B42 8261
0043(ff23)latin captital letter C43 8262
0044(ff24)latin captital letter D44 8263
0045(ff25)latin captital letter E45 8264
0046(ff26)latin captital letter F46 8265
0047(ff27)latin captital letter G47 8266
0048(ff28)latin captital letter H48 8267
0049(ff29)latin captital letter I49 8268
004a(ff2a)latin captital letter J4a 8269
004b(ff2b)latin captital letter K4b 826a
004c(ff2c)latin captital letter L4c 826b
004d(ff2d)latin captital letter M4d 826c
004e(ff2e)latin captital letter N4e 826d
004f(ff2f)latin captital letter O4f 826e
0050(ff30)latin captital letter P50 826f
0051(ff31)latin captital letter Q51 8270
0052(ff32)latin captital letter R52 8271
0053(ff33)latin captital letter S53 8272
0054(ff34)latin captital letter T54 8273
0055(ff35)latin captital letter U55 8274
0056(ff36)latin captital letter V56 8275
0057(ff37)latin captital letter W57 8276
0058(ff38)latin captital letter X58 8277
0059(ff39)latin captital letter Y59 8278
005a(ff3a)latin captital letter Z5a 8279
0061(ff41)latin small letter a61 8281
0062(ff42)latin small letter b62 8282
0063(ff43)latin small letter c63 8283
0064(ff44)latin small letter d64 8284
0065(ff45)latin small letter e65 8285
0066(ff46)latin small letter f66 8286
0067(ff47)latin small letter g67 8287
0068(ff48)latin small letter h68 8288
0069(ff49)latin small letter i69 8289
006a(ff4a)latin small letter j6a 828a
006b(ff4b)latin small letter k6b 828b
006c(ff4c)latin small letter l6c 828c
006d(ff4d)latin small letter m6d 828d
006e(ff4e)latin small letter n6e 828e
006f(ff4f)latin small letter o6f 828f
0070(ff50)latin small letter p70 8290
0071(ff51)latin small letter q71 8291
0072(ff52)latin small letter r72 8292
0073(ff53)latin small letter s73 8293
0074(ff54)latin small letter t74 8294
0075(ff55)latin small letter u75 8295
0076(ff56)latin small letter v76 8296
0077(ff57)latin small letter w77 8297
0078(ff58)latin small letter x78 8298
0079(ff59)latin small letter y79 8299
007a(ff5a)latin small letter z7a 829a

表3. Halfwidth Variant のある文字
UCS NORMAL HALFWIDTH
3001(ff64)ideographic comma 8141 a4
3002(ff61)ideographic full stop 8142 a1
300C(ff62)left corner bracket 8175 a2
300D(ff63)right corner bracket 8176 a3
309b(ff9e)katakana-hiragana voiced sound mark 814a de
309c(ff9f)katakana-hiragana semi-voiced sound mark814b df
30a1(ff67)katakana letter small a 8340 a7
30a2(ff71)katakana letter a 8341 b1
30a3(ff68)katakana letter small i 8342 a8
30a4(ff72)katakana letter i 8343 b2
30a5(ff69)katakana letter small u 8344 a9
30a6(ff73)katakana letter u 8345 b3
30a7(ff6a)katakana letter small e 8346 aa
30a8(ff74)katakana letter e 8347 b4
30a9(ff6b)katakana letter small o 8348 ab
30aa(ff75)katakana letter o 8349 b5
30ab(ff76)katakana letter ka 834a b6
30ad(ff77)katakana letter ki 834c b7
30af(ff78)katakana letter ku 834e b8
30b1(ff79)katakana letter ke 8350 b9
30b3(ff7a)katakana letter ko 8352 ba
30b5(ff7b)katakana letter sa 8354 bb
30b7(ff7c)katakana letter si 8356 bc
30b9(ff7d)katakana letter su 8358 bd
30bb(ff7e)katakana letter se 835a be
30bd(ff7f)katakana letter so 835c bf
30bf(ff80)katakana letter ta 835e c0
30c1(ff81)katakana letter ti 8360 c1
30c3(ff6f)katakana letter small tu 8362 af
30c4(ff82)katakana letter tu 8363 c2
30c6(ff83)katakana letter te 8365 c3
30c8(ff84)katakana letter to 8367 c4
30ca(ff85)katakana letter na 8369 c5
30cb(ff86)katakana letter ni 836a c6
30cc(ff87)katakana letter nu 836b c7
30cd(ff88)katakana letter ne 836c c8
30ce(ff89)katakana letter no 836d c9
30cf(ff8a)katakana letter ha 836e ca
30d2(ff8b)katakana letter hi 8371 cb
30d5(ff8c)katakana letter hu 8374 cc
30d8(ff8d)katakana letter he 8377 cd
30db(ff8e)katakana letter ho 837a ce
30de(ff8f)katakana letter ma 837d cf
30df(ff90)katakana letter mi 837e d0
30e0(ff91)katakana letter mu 8380 d1
30e1(ff92)katakana letter me 8381 d2
30e2(ff93)katakana letter mo 8382 d3
30e3(ff6c)katakana letter small ya 8383 ac
30e4(ff94)katakana letter ya 8384 d4
30e5(ff6d)katakana letter small yu 8385 ad
30e6(ff95)katakana letter yu 8386 d5
30e7(ff6e)katakana letter small yo 8387 ae
30e8(ff96)katakana letter yo 8388 d6
30e9(ff97)katakana letter ra 8389 d7
30ea(ff98)katakana letter ri 838a d8
30eb(ff99)katakana letter ru 838b d9
30ec(ff9a)katakana letter re 838c da
30ed(ff9b)katakana letter ro 838d db
30ef(ff9c)katakana letter wa 838f dc
30f2(ff66)katakana letter wo 8392 a6
30f3(ff9d)katakana letter n 8393 dd
30fb(ff65)katakana middle dot 815b a5
30fc(ff70)katakana-hiragana prolonged sound mark 8145 b0

表4. それ以外の, UCS 0021-007E, 00A0-00FF にマップされる文字
UCS cp932
00A7 section sign8198
00A8 diaresis 814E
00B0 degree sign 818B
00B1 plus-minus sign 817D
00B4 acute accent 814C
00B6 pilcrow sign 81F7
00D7 multiplication sign 817E
00F7 division sign 8180


WideCharToMultiByte の特殊処理

UCS 00A1 から 00FF のうち, cp932 に対応する文字が存在しない場合, WideCharToMultiByte API は replacement character で埋めるのではなく おおむね似た文字で代替する。 (00A4, 00BC, 00BD, 00BE, 00BF のみ replacement character を使用する)

注意:

  1. 円記号(00a5) は 5c に map される。
  2. BROKEN BAR (00a6) は FULLWIDTH BROKEN BAR でなく VERTICAL LINE になる。
  3. INVERTED EXCLAMATION MARK (00a1) はふつうの EXCLAMATION MARK になるのに INVERTED QUESTION MARK (00bf) を QUESTION MARK で代替しないのは不思議。

UCScp932NAME
00a1 INVERTED EXCLAMATION MARK21EXCLAMATION MARK
00a2 CENT SIGN 8191 FULLWIDTH CENT SIGN
00a3 POUND SIGN 8192 FULLWIDTH POUND SIGN
00a5 YEN SIGN 5c REVERSE SOLIDUS
00a6 BROKEN BAR 7c VERTICAL LINE
00a9 COPYRIGHT SIGN 63 LATIN SMALL LETTER C
00aa FEMININE ORDINAL INDICATOR61 LATIN SMALL LETTER A
00ab LEFT-POINTING DOUBLE ANGLE QUOTATION MARK81e1 MUCH LESS THAN
00ac NOT SIGN 81ca FULLWIDTH NOT SIGN
00ad SOFT HYPHEN 2d HYPHEN-MINUS
00ae REGISTERED SIGN 52 LATIN CAPITAL LETTER R
00af MACRON 8150 FULLWIDTH MACRON
00b2 SUPERSCRIPT TWO 32 DIGIT TWO
00b3 SUPERSCRIPT THREE 33 DIGIT THREE
00b5 MICRO SIGN 83ca GREEK SMALL LETTER MU
00b7 MIDDLE DOT 8145 KATAKANA MIDDLE DOT
00b8 CEDILLA 8143 FULLWIDTH COMMA
00b9 SUPERSCRIPT ONE 31 DIGIT ONE
00ba MASCULINE ORDINAL INDICATOR6f LATIN SMALL LETTER O
00bb RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK81e2MUCH GREATER-THAN
00c0 LATIN CAPITAL LETTER A WITH GRAVE41LATIN CAPITAL LETTER A
00c1 LATIN CAPITAL LETTER A WITH ACUTE41
00c2 LATIN CAPITAL LETTER A WITH CIRCUMFLEX41
00c3 LATIN CAPITAL LETTER A WITH TILDE41
00c4 LATIN CAPITAL LETTER A WITH DIAERESIS41
00c5 LATIN CAPITAL LETTER A WITH RING ABOVE41
00c6 LATIN CAPITAL LIGATURE AE41
00c7 LATIN CAPITAL LETTER C WITH CEDILLA43LATIN CAPITAL LETTER C
00c8 LATIN CAPITAL LETTER E WITH GRAVE45LATIN CAPITAL LETTER E
00c9 LATIN CAPITAL LETTER E WITH ACUTE45
00ca LATIN CAPITAL LETTER E WITH CIRCUMFLEX45
00cb LATIN CAPITAL LETTER E WITH DIAERESIS45
00cc LATIN CAPITAL LETTER I WITH GRAVE49LATIN CAPITAL LETTER I
00cd LATIN CAPITAL LETTER I WITH ACUTE49
00ce LATIN CAPITAL LETTER I WITH CIRCUMFLEX49
00cf LATIN CAPITAL LETTER I WITH DIAERESIS49
00d0 LATIN CAPITAL LETTER ETH44LATIN CAPITAL LETTER D
00d1 LATIN CAPITAL LETTER N WITH TILDE4eLATIN CAPITAL LETTER N
00d2 LATIN CAPITAL LETTER O WITH GRAVE4fLATIN CAPITAL LETTER O
00d3 LATIN CAPITAL LETTER O WITH ACUTE4f
00d4 LATIN CAPITAL LETTER O WITH CIRCUMFLEX4f
00d5 LATIN CAPITAL LETTER O WITH TILDE4f
00d6 LATIN CAPITAL LETTER O WITH DIAERESIS4f
00d8 LATIN CAPITAL LETTER O WITH STROKE4f
00d9 LATIN CAPITAL LETTER U WITH GRAVE55LATIN CAPITAL LETTER U
00da LATIN CAPITAL LETTER U WITH ACUTE55
00db LATIN CAPITAL LETTER U WITH CIRCUMFLEX55
00dc LATIN CAPITAL LETTER U WITH DIAERESIS55
00dd LATIN CAPITAL LETTER Y WITH ACUTE59LATIN CAPITAL LETTER Y
00de LATIN CAPITAL LETTER THORN54LATIN CAPITAL LETTER T
00df LATIN SMALL LETTER SHARP S73LATTIN SMALL LETTER S
00e0 LATIN SMALL LETTER A WITH GRAVE61LATIN SMALL LETTER A
00e1 LATIN SMALL LETTER A WITH ACUTE61
00e2 LATIN SMALL LETTER A WITH CIRCUMFLEX61
00e3 LATIN SMALL LETTER A WITH TILDE61
00e4 LATIN SMALL LETTER A WITH DIAERESIS61
00e5 LATIN SMALL LETTER A WITH RING ABOVE61
00e6 LATIN SMALL LIGATURE AE61
00e7 LATIN SMALL LETTER C WITH CEDILLA63LATIN SMALL LETTER C
00e8 LATIN SMALL LETTER E WITH GRAVE65LATIN SMALL LETTER E
00e9 LATIN SMALL LETTER E WITH ACUTE65
00ea LATIN SMALL LETTER E WITH CIRCUMFLEX65
00eb LATIN SMALL LETTER E WITH DIAERESIS65
00ec LATIN SMALL LETTER I WITH GRAVE69LATIN SMALL LETTER I
00ed LATIN SMALL LETTER I WITH ACUTE69
00ee LATIN SMALL LETTER I WITH CIRCUMFLEX69
00ef LATIN SMALL LETTER I WITH DIAERESIS69
00f0 LATIN SMALL LETTER ETH64LATIN SMALL LETTER D
00f1 LATIN SMALL LETTER N WITH TILDE6eLATIN SMALL LETTER N
00f2 LATIN SMALL LETTER O WITH GRAVE6fLATIN SMALL LETTER O
00f3 LATIN SMALL LETTER O WITH ACUTE6f
00f4 LATIN SMALL LETTER O WITH CIRCUMFLEX6f
00f5 LATIN SMALL LETTER O WITH TILDE6f
00f6 LATIN SMALL LETTER O WITH DIAERESIS6f
00f8 LATIN SMALL LETTER O WITH STROKE6f
00f9 LATIN SMALL LETTER U WITH GRAVE75LATIN SMALL LETTER U
00fa LATIN SMALL LETTER U WITH ACUTE75
00fb LATIN SMALL LETTER U WITH CIRCUMFLEX75
00fc LATIN SMALL LETTER U WITH DIAERESIS75
00fd LATIN SMALL LETTER Y WITH ACUTE79LATIN SMALL LETTER Y
00fe LATIN SMALL LETTER THORN74LATIN SMALL LETTER T
00ff LATIN SMALL LETTER Y WITH DIAERESIS79LATIN SMALL LETTER Y


バージョンによる違い

Windows NT 3.1 や Win32S については NEC が出している版と Microsoft が出している版で異なる mapping を行うことがあった。

Windows95, Windows NT3.51, Windows NT4.0 については 現在のところそのような違いは見つかっていない。


文字コードの話に戻る