MacJapanese と CP10001
おそらくそれなりに需要があると思われる Macintosh の SJIS (MacJapanese) ですが、Windows の SJIS (CP932) とは結構違います。しかもただ異なるだけでなく、Unicode 間での変換においては、56 件の多対一変換が必要となり、一対一変換を前提としたプログラムでは大きなコストがかかってしまいます。
ところで、Windows には「Macintosh 日本語」と名づけられた CP10001 というエンコーディングがあります。CP10001 ならば Win32API を叩けば簡単に使えるので、これが MacJapanese の代わりになるならば非常に便利ですが、実際のところどの程度つかえるのか調べて見ました。
当然のことながら、多対一変換は一切含まれていません。また、円記号・バックスラッシュや、波ダッシュ等では互いに異なっています。さらに、もともと Windows には存在しなかった文字は CP10001 では拾えていないように見えます。Macintosh と Windows の文字コードの違い を眺めるとイメージがわきやすいでしょうか。
以下は多対一変換を除いた相違点の表です。
SJIS | MacJapanese | CP10001 |
---|---|---|
0x5C | U+00A5 | U+005C |
0x7F | - | U+007F |
0x80 | U+0080 | U+005C |
0x8145 | U+30FB | - |
0x815C | U+2014 | U+2015 |
0x8160 | U+301C | U+FF5E |
0x8161 | U+2016 | U+2225 |
0x817C | U+2212 | U+FF0D |
0x8191 | U+00A2 | U+FFE0 |
0x8192 | U+00A3 | U+FFE1 |
0x81CA | U+00AC | U+FFE2 |
0x855E | U+2474 | - |
0x855F | U+2475 | - |
0x8560 | U+2476 | - |
0x8561 | U+2477 | - |
0x8562 | U+2478 | - |
0x8563 | U+2479 | - |
0x8564 | U+247A | - |
0x8565 | U+247B | - |
0x8566 | U+247C | - |
0x8567 | U+247D | - |
0x8568 | U+247E | - |
0x8569 | U+247F | - |
0x856A | U+2480 | - |
0x856B | U+2481 | - |
0x856C | U+2482 | - |
0x856D | U+2483 | - |
0x856E | U+2484 | - |
0x856F | U+2485 | - |
0x8570 | U+2486 | - |
0x8571 | U+2487 | - |
0x857C | U+2776 | - |
0x857D | U+2777 | - |
0x857E | U+2778 | - |
0x8580 | U+2779 | - |
0x8581 | U+277A | - |
0x8582 | U+277B | - |
0x8583 | U+277C | - |
0x8584 | U+277D | - |
0x8585 | U+277E | - |
0x8592 | U+2488 | - |
0x8593 | U+2489 | - |
0x8594 | U+248A | - |
0x8595 | U+248B | - |
0x8596 | U+248C | - |
0x8597 | U+248D | - |
0x8598 | U+248E | - |
0x8599 | U+248F | - |
0x859A | U+2490 | - |
0x85A9 | U+216A | - |
0x85AA | U+216B | - |
0x85BD | U+217A | - |
0x85BE | U+217B | - |
0x85DB | U+249C | - |
0x85DC | U+249D | - |
0x85DD | U+249E | - |
0x85DE | U+249F | - |
0x85DF | U+24A0 | - |
0x85E0 | U+24A1 | - |
0x85E1 | U+24A2 | - |
0x85E2 | U+24A3 | - |
0x85E3 | U+24A4 | - |
0x85E4 | U+24A5 | - |
0x85E5 | U+24A6 | - |
0x85E6 | U+24A7 | - |
0x85E7 | U+24A8 | - |
0x85E8 | U+24A9 | - |
0x85E9 | U+24AA | - |
0x85EA | U+24AB | - |
0x85EB | U+24AC | - |
0x85EC | U+24AD | - |
0x85ED | U+24AE | - |
0x85EE | U+24AF | - |
0x85EF | U+24B0 | - |
0x85F0 | U+24B1 | - |
0x85F1 | U+24B2 | - |
0x85F2 | U+24B3 | - |
0x85F3 | U+24B4 | - |
0x85F4 | U+24B5 | - |
0x8641 | U+339F | - |
0x8643 | U+33A0 | - |
0x8644 | U+33A4 | - |
0x8647 | U+33A5 | - |
0x8649 | U+33A2 | - |
0x864E | U+3396 | - |
0x864F | U+3397 | - |
0x8650 | U+2113 | - |
0x8651 | U+3398 | - |
0x8652 | U+33B3 | - |
0x8653 | U+33B2 | - |
0x8654 | U+33B1 | - |
0x8655 | U+33B0 | - |
0x8656 | U+2109 | - |
0x8657 | U+33D4 | - |
0x8658 | U+33CB | - |
0x8659 | U+3390 | - |
0x865A | U+3385 | - |
0x865B | U+3386 | - |
0x865C | U+3387 | - |
0x869F | U+2664 | - |
0x86A0 | U+2667 | - |
0x86A1 | U+2661 | - |
0x86A2 | U+2662 | - |
0x86A3 | U+2660 | - |
0x86A4 | U+2663 | - |
0x86A5 | U+2665 | - |
0x86A6 | U+2666 | - |
0x86B3 | U+3020 | - |
0x86B4 | U+260E | - |
0x86B5 | U+3004 | - |
0x86C7 | U+261E | - |
0x86C8 | U+261C | - |
0x86C9 | U+261D | - |
0x86CA | U+261F | - |
0x86CB | U+21C6 | - |
0x86CC | U+21C4 | - |
0x86CD | U+21C5 | - |
0x86CF | U+21E8 | - |
0x86D0 | U+21E6 | - |
0x86D1 | U+21E7 | - |
0x86D2 | U+21E9 | - |
0x8740 | U+3230 | - |
0x8741 | U+322A | - |
0x8742 | U+322B | - |
0x8743 | U+322C | - |
0x8744 | U+322D | - |
0x8745 | U+322E | - |
0x8746 | U+322F | - |
0x8747 | U+3240 | - |
0x8748 | U+3237 | - |
0x8749 | U+3242 | - |
0x874A | U+3243 | - |
0x874C | U+323A | - |
0x874E | U+323E | - |
0x874F | U+3234 | - |
0x8751 | U+323B | - |
0x8752 | U+3236 | - |
0x8753 | U+3233 | - |
0x8754 | U+3235 | - |
0x8755 | U+323C | - |
0x8756 | U+323D | - |
0x8757 | U+323F | - |
0x8758 | U+3238 | - |
0x8798 | U+32A9 | - |
0x8799 | U+3296 | - |
0x879A | U+329D | - |
0x879B | U+3298 | - |
0x879C | U+329E | - |
0x879E | U+3299 | - |
0x87A3 | U+3316 | - |
0x87A4 | U+3305 | - |
0x87A5 | U+3333 | - |
0x87A6 | U+334E | - |
0x87AA | U+3315 | - |
0x87AE | U+3339 | - |
0x87B1 | U+3342 | - |
0x87BD | U+3300 | - |
0x87BE | U+331E | - |
0x87BF | U+332A | - |
0x87C0 | U+3331 | - |
0x87C1 | U+3347 | - |
0x87FA | U+337F | - |
0x8854 | U+301D | - |
0x8855 | U+301F | - |
0x8868 | U+3094 | - |
0x886A | U+30F7 | - |
0x886B | U+30F8 | - |
0x886C | U+30F9 | - |
0x886D | U+30FA | - |
0xEB51 | U+FE33 | - |
0xEB5C | U+FE31 | - |
0xEB64 | U+FE30 | - |
0xEB69 | U+FE35 | - |
0xEB6A | U+FE36 | - |
0xEB6B | U+FE39 | - |
0xEB6C | U+FE3A | - |
0xEB6F | U+FE37 | - |
0xEB70 | U+FE38 | - |
0xEB71 | U+FE3F | - |
0xEB72 | U+FE40 | - |
0xEB73 | U+FE3D | - |
0xEB74 | U+FE3E | - |
0xEB75 | U+FE41 | - |
0xEB76 | U+FE42 | - |
0xEB77 | U+FE43 | - |
0xEB78 | U+FE44 | - |
0xEB79 | U+FE3B | - |
0xEB7A | U+FE3C | - |