機種依存文字とUnicode
導入
機種依存文字と呼ばれる文字があります。 例えばWindowsでは、 大文字のローマ数字(ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ)、 小文字のローマ数字(ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ)、 丸囲み数字(①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳)、 丸囲み文字(㊤㊥㊦㊧㊨)、 カタカナ表記の単位(㍉㍍㌔㌘㌧㌦㍑㌫㌢)、 単位記号(㎝㎏㎡)、 複数のアルファベットを合成した文字(㏍℡№)、 元号(㍻㍼㍽㍾)、 会社名等で用いられる括弧囲み文字(㈱㈲㈹)等が機種依存文字と呼ばれています。
機種依存文字は一般的に、異機種間でデータの交換を行った場合、 例えばWindowsで作成したテキストファイルをMacintoshで表示した場合に文字化けしてしまうので、 これら異機種でデータ交換することを前提としたインターネットでは利用するべきではないと言われています。
しかし、これらは機種依存文字と呼ばれているものの、 その意味はある意味間違ってはいませんが、ある意味では間違っています。 そのため、文字化けを起こさずにこれらの文字を交換することが可能です。
機種依存文字は何故文字化けするのか?
WindowsもMacintoshもShift_JISという同じ文字コードが使われていることは有名です。 同じ文字コードでデータ交換を行うのであれば文字化けは発生しないはずです。 では何故、異機種間でデータを交換すると文字化けするのでしょうか?
実は、これらの文字はShift_JISでは扱えない文字である、というところに問題があります。 これらの文字はShift_JISで文字が定義されていないコードに無理矢理文字を割り当てて、 取り扱えるようにしたものなのです。 ローマ数字(大文字)の場合、Windowsでは以下のコードが割り当てられています(各行、最初の16進数)。
0x8754 0x2160 #ROMAN NUMERAL ONE 0x8755 0x2161 #ROMAN NUMERAL TWO 0x8756 0x2162 #ROMAN NUMERAL THREE 0x8757 0x2163 #ROMAN NUMERAL FOUR 0x8758 0x2164 #ROMAN NUMERAL FIVE 0x8759 0x2165 #ROMAN NUMERAL SIX 0x875A 0x2166 #ROMAN NUMERAL SEVEN 0x875B 0x2167 #ROMAN NUMERAL EIGHT 0x875C 0x2168 #ROMAN NUMERAL NINE 0x875D 0x2169 #ROMAN NUMERAL TEN
このような拡張文字があることから、Microsoftが拡張したShift_JISは一般的にはCP932と呼ばれます(CPはコードページの略)。
このコードがMacintoshのShift_JISでは何に割り当てられているのかを調べてみると、 次のようになっています。
0x8754 0x3235 # PARENTHESIZED IDEOGRAPH SPECIAL 0x8755 0x323C # PARENTHESIZED IDEOGRAPH SUPERVISE 0x8756 0x323D # PARENTHESIZED IDEOGRAPH ENTERPRISE 0x8757 0x323F # PARENTHESIZED IDEOGRAPH ALLIANCE 0x8758 0x3238 # PARENTHESIZED IDEOGRAPH LABOR
Ⅰにあたる0x8754
から、Ⅴにあたる0x8758
は別の文字に割り当てられているのが分かりますし、
0x8759
以降は文字が割り当てられてすらいないようです。
では、Macintoshでローマ数字は使えないのかというと、そういうわけでもなく、 以下のようにまた別のコードにローマ数字が割り当てられていることがわかります。
0x859F 0x2160 # ROMAN NUMERAL ONE 0x85A0 0x2161 # ROMAN NUMERAL TWO 0x85A1 0x2162 # ROMAN NUMERAL THREE 0x85A2 0x2163 # ROMAN NUMERAL FOUR 0x85A3 0x2164 # ROMAN NUMERAL FIVE 0x85A4 0x2165 # ROMAN NUMERAL SIX 0x85A5 0x2166 # ROMAN NUMERAL SEVEN 0x85A6 0x2167 # ROMAN NUMERAL EIGHT 0x85A7 0x2168 # ROMAN NUMERAL NINE 0x85A8 0x2169 # ROMAN NUMERAL TEN
ちなみに、Windowsで(CP932に)これらのコードには何の文字も割り当てられていません。
このように、データ交換の際に文字化けを引き起こす機種依存文字と呼ばれる文字が存在することは確かであると言えます。
機種依存文字という名称は適切ではない
ここまでの解説で、機種依存文字というのは、 Shift_JISの未定義領域を各ベンダーが互換を考えずに独自拡張した結果であることが分かるかと思います。 この理屈から考えるなら、これら機種依存文字と呼ばれる文字も、 正式に規格化された文字コードで利用するならば機種依存ではない、という理屈も見えてきます。 つまり、機種依存文字は、ある特定の文字コードで機種依存であるだけで、 全ての文字コードで機種依存という訳ではないのです。 そして実際に、これらの機種依存文字と呼ばれていた文字が定義された文字コードが存在しています。 それはUnicodeです。
UnicodeはWebでは一般的に、UTF-16、もしくはUTF-8、UTF-7のいずれかで利用されています。 これらの文字コードでHTMLファイルを作ると、機種依存文字を問題なく記述することができます。
また、Shift_JIS等で記述したファイルであっても、HTMLの数値文字参照を利用すればこれらの文字を利用することができます。
更に、以下の表にあるように、機種依存文字と呼ばれていた文字をさらに拡張し、 Unicodeでのみ扱える文字というのも増えています。 例えば、㊙という文字も0x3299に定義されています。 この文字は需要はあったものの、従来のWindowsのCP932では利用できませんでした(Macintoshでは利用できていました)。
ローマ数字や単位に関する注意
ローマ数字や単位といった、複数の文字を組み合わせて一つの文字になっている場合、
これらを利用する方が良いことがあります。
例えば、ローマ数字の3である、III
と、Ⅲ
について考えてみましょう。
これらは共に、目で見る分には同じ様に見えます。
もともとローマ数字はアルファベットを組み合わせて数字を表現したもののようですので、
それは当然のことかもしれません。
しかし、これらはコンピュータから見ると異なって見えます。
III
と記述するとI
が三つ並んでいますので、
例えば音声読み上げブラウザで読み上げるとあい、あい、あいとなるかもしれません(実情はしりませんが、可能性は高いと思われます)。
それに対してⅢ
と記述すると、これは明らかに数字の3ですので、
さん、もしくはスリーと読み上げられる可能性が高くなります。
これは、視覚にハンデのある方にとってはアクセシビリティに関わる問題です。
また、より多くの人にとって身近なところでは、検索エンジンがあります。 今後も検索エンジンが進化していけば、 例えばドラクエ3という入力で、 ドラクエⅢも検索結果に含まれることが期待できます。
単位の場合も同様で、一文字の中に複数の文字が入っているこれらの文字は、 それ単独で、意味を持ち合わせているという点で、同義の文字の組み合わせよりも優れています。
実用上の注意
この様に、技術的にはローマ数字や記号を直接利用することは好ましいことです。 しかし、実用に際しては注意も必要です。
例えば、単位の多くは下の実例を見てもらえれば分かるように、 文字が小さくなるので非常に読みにくくなってしまいます。
また、互換性の面では、WindowsやMacintoshには元々機種依存文字として存在していたものの、 他のOSには存在していなかった文字、こういった文字はUnicodeで利用可能となっているとはいえ、 そのOSで表示可能なフォントがあるかどうかは実機でテストしてみなくては分かりません。
現在、様々なシステムはUnicodeをベースとして設計されています。 そのため、Unicodeの利用には問題は無いでしょう。 問題があるとすればフォントですが、これは年々改善していくことが期待できます。 みなさんが率先して利用していけば、フォントの実装改善は、より加速するでしょう。
私は、丸囲み数字や、ローマ数字といった読みにくくない文字に関しては利用を推奨します。 それに対して小さく表示されてしまう単位等の利用は避けるべきではないかと思います。
Unicodeで利用できる文字の例
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x2150 | ⅓ | ⅔ | ⅕ | ⅖ | ⅗ | ⅘ | ⅙ | ⅚ | ⅛ | ⅜ | ⅝ | ⅞ | ⅟ | |||
0x2160 | Ⅰ | Ⅱ | Ⅲ | Ⅳ | Ⅴ | Ⅵ | Ⅶ | Ⅷ | Ⅸ | Ⅹ | Ⅺ | Ⅻ | Ⅼ | Ⅽ | Ⅾ | Ⅿ |
0x2170 | ⅰ | ⅱ | ⅲ | ⅳ | ⅴ | ⅵ | ⅶ | ⅷ | ⅸ | ⅹ | ⅺ | ⅻ | ⅼ | ⅽ | ⅾ | ⅿ |
0x2180 | ↀ | ↁ | ↂ | |||||||||||||
0x2190 | ← | ↑ | → | ↓ | ↔ | ↕ | ↖ | ↗ | ↘ | ↙ | ↚ | ↛ | ↜ | ↝ | ↞ | ↟ |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x2460 | ① | ② | ③ | ④ | ⑤ | ⑥ | ⑦ | ⑧ | ⑨ | ⑩ | ⑪ | ⑫ | ⑬ | ⑭ | ⑮ | ⑯ |
0x2470 | ⑰ | ⑱ | ⑲ | ⑳ | ⑴ | ⑵ | ⑶ | ⑷ | ⑸ | ⑹ | ⑺ | ⑻ | ⑼ | ⑽ | ⑾ | ⑿ |
0x2480 | ⒀ | ⒁ | ⒂ | ⒃ | ⒄ | ⒅ | ⒆ | ⒇ | ⒈ | ⒉ | ⒊ | ⒋ | ⒌ | ⒍ | ⒎ | ⒏ |
0x2490 | ⒐ | ⒑ | ⒒ | ⒓ | ⒔ | ⒕ | ⒖ | ⒗ | ⒘ | ⒙ | ⒚ | ⒛ | ⒜ | ⒝ | ⒞ | ⒟ |
0x24A0 | ⒠ | ⒡ | ⒢ | ⒣ | ⒤ | ⒥ | ⒦ | ⒧ | ⒨ | ⒩ | ⒪ | ⒫ | ⒬ | ⒭ | ⒮ | ⒯ |
0x24B0 | ⒰ | ⒱ | ⒲ | ⒳ | ⒴ | ⒵ | Ⓐ | Ⓑ | Ⓒ | Ⓓ | Ⓔ | Ⓕ | Ⓖ | Ⓗ | Ⓘ | Ⓙ |
0x24C0 | Ⓚ | Ⓛ | Ⓜ | Ⓝ | Ⓞ | Ⓟ | Ⓠ | Ⓡ | Ⓢ | Ⓣ | Ⓤ | Ⓥ | Ⓦ | Ⓧ | Ⓨ | Ⓩ |
0x24D0 | ⓐ | ⓑ | ⓒ | ⓓ | ⓔ | ⓕ | ⓖ | ⓗ | ⓘ | ⓙ | ⓚ | ⓛ | ⓜ | ⓝ | ⓞ | ⓟ |
0x24E0 | ⓠ | ⓡ | ⓢ | ⓣ | ⓤ | ⓥ | ⓦ | ⓧ | ⓨ | ⓩ | ⓪ | ⓫ | ⓬ | ⓭ | ⓮ | ⓯ |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x2600 | ☀ | ☁ | ☂ | ☃ | ☄ | ★ | ☆ | ☇ | ☈ | ☉ | ☊ | ☋ | ☌ | ☍ | ☎ | ☏ |
0x2610 | ☐ | ☑ | ☒ | ☓ | ☚ | ☛ | ☜ | ☝ | ☞ | ☟ | ||||||
0x2620 | ☠ | ☡ | ☢ | ☣ | ☤ | ☥ | ☦ | ☧ | ☨ | ☩ | ☪ | ☫ | ☬ | ☭ | ☮ | ☯ |
0x2630 | ☰ | ☱ | ☲ | ☳ | ☴ | ☵ | ☶ | ☷ | ☸ | ☹ | ☺ | ☻ | ☼ | ☽ | ☾ | ☿ |
0x2640 | ♀ | ♁ | ♂ | ♃ | ♄ | ♅ | ♆ | ♇ | ♈ | ♉ | ♊ | ♋ | ♌ | ♍ | ♎ | ♏ |
0x2650 | ♐ | ♑ | ♒ | ♓ | ♔ | ♕ | ♖ | ♗ | ♘ | ♙ | ♚ | ♛ | ♜ | ♝ | ♞ | ♟ |
0x2660 | ♠ | ♡ | ♢ | ♣ | ♤ | ♥ | ♦ | ♧ | ♨ | ♩ | ♪ | ♫ | ♬ | ♭ | ♮ | ♯ |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x3220 | ㈠ | ㈡ | ㈢ | ㈣ | ㈤ | ㈥ | ㈦ | ㈧ | ㈨ | ㈩ | ㈪ | ㈫ | ㈬ | ㈭ | ㈮ | ㈯ |
0x3230 | ㈰ | ㈱ | ㈲ | ㈳ | ㈴ | ㈵ | ㈶ | ㈷ | ㈸ | ㈹ | ㈺ | ㈻ | ㈼ | ㈽ | ㈾ | ㈿ |
0x3240 | ㉀ | ㉁ | ㉂ | ㉃ |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F | |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x3280 | ㊀ | ㊁ | ㊂ | ㊃ | ㊄ | ㊅ | ㊆ | ㊇ | ㊈ | ㊉ | ㊊ | ㊋ | ㊌ | ㊍ | ㊎ | ㊏ |
0x3290 | ㊐ | ㊑ | ㊒ | ㊓ | ㊔ | ㊕ | ㊖ | ㊗ | ㊘ | ㊙ | ㊚ | ㊛ | ㊜ | ㊝ | ㊞ | ㊟ |
0x32A0 | ㊠ | ㊡ | ㊢ | ㊣ | ㊤ | ㊥ | ㊦ | ㊧ | ㊨ | ㊩ | ㊪ | ㊫ | ㊬ | ㊭ | ㊮ | ㊯ |
0x32B0 | ㊰ | ㊱ | ㊲ | ㊳ | ㊴ | ㊵ | ㊶ | ㊷ | ㊸ | ㊹ | ㊺ | ㊻ | ㊼ | ㊽ | ㊾ | ㊿ |
0x32C0 | ㋀ | ㋁ | ㋂ | ㋃ | ㋄ | ㋅ | ㋆ | ㋇ | ㋈ | ㋉ | ㋊ | ㋋ | ||||
0x32D0 | ㋐ | ㋑ | ㋒ | ㋓ | ㋔ | ㋕ | ㋖ | ㋗ | ㋘ | ㋙ | ㋚ | ㋛ | ㋜ | ㋝ | ㋞ | ㋟ |
0x32E0 | ㋠ | ㋡ | ㋢ | ㋣ | ㋤ | ㋥ | ㋦ | ㋧ | ㋨ | ㋩ | ㋪ | ㋫ | ㋬ | ㋭ | ㋮ | ㋯ |
0x32F0 | ㋰ | ㋱ | ㋲ | ㋳ | ㋴ | ㋵ | ㋶ | ㋷ | ㋸ | ㋹ | ㋺ | ㋻ | ㋼ | ㋽ | ㋾ | ㋿ |
0x3300 | ㌀ | ㌁ | ㌂ | ㌃ | ㌄ | ㌅ | ㌆ | ㌇ | ㌈ | ㌉ | ㌊ | ㌋ | ㌌ | ㌍ | ㌎ | ㌏ |
0x3310 | ㌐ | ㌑ | ㌒ | ㌓ | ㌔ | ㌕ | ㌖ | ㌗ | ㌘ | ㌙ | ㌚ | ㌛ | ㌜ | ㌝ | ㌞ | ㌟ |
0x3320 | ㌠ | ㌡ | ㌢ | ㌣ | ㌤ | ㌥ | ㌦ | ㌧ | ㌨ | ㌩ | ㌪ | ㌫ | ㌬ | ㌭ | ㌮ | ㌯ |
0x3330 | ㌰ | ㌱ | ㌲ | ㌳ | ㌴ | ㌵ | ㌶ | ㌷ | ㌸ | ㌹ | ㌺ | ㌻ | ㌼ | ㌽ | ㌾ | ㌿ |
0x3340 | ㍀ | ㍁ | ㍂ | ㍃ | ㍄ | ㍅ | ㍆ | ㍇ | ㍈ | ㍉ | ㍊ | ㍋ | ㍌ | ㍍ | ㍎ | ㍏ |
0x3350 | ㍐ | ㍑ | ㍒ | ㍓ | ㍔ | ㍕ | ㍖ | ㍗ | ㍘ | ㍙ | ㍚ | ㍛ | ㍜ | ㍝ | ㍞ | ㍟ |
0x3360 | ㍠ | ㍡ | ㍢ | ㍣ | ㍤ | ㍥ | ㍦ | ㍧ | ㍨ | ㍩ | ㍪ | ㍫ | ㍬ | ㍭ | ㍮ | ㍯ |
0x3370 | ㍰ | ㍱ | ㍲ | ㍳ | ㍴ | ㍵ | ㍶ | ㍻ | ㍼ | ㍽ | ㍾ | ㍿ | ||||
0x3380 | ㎀ | ㎁ | ㎂ | ㎃ | ㎄ | ㎅ | ㎆ | ㎇ | ㎈ | ㎉ | ㎊ | ㎋ | ㎌ | ㎍ | ㎎ | ㎏ |
0x3390 | ㎐ | ㎑ | ㎒ | ㎓ | ㎔ | ㎕ | ㎖ | ㎗ | ㎘ | ㎙ | ㎚ | ㎛ | ㎜ | ㎝ | ㎞ | ㎟ |
0x33A0 | ㎠ | ㎡ | ㎢ | ㎣ | ㎤ | ㎥ | ㎦ | ㎧ | ㎨ | ㎩ | ㎪ | ㎫ | ㎬ | ㎭ | ㎮ | ㎯ |
0x33B0 | ㎰ | ㎱ | ㎲ | ㎳ | ㎴ | ㎵ | ㎶ | ㎷ | ㎸ | ㎹ | ㎺ | ㎻ | ㎼ | ㎽ | ㎾ | ㎿ |
0x33C0 | ㏀ | ㏁ | ㏂ | ㏃ | ㏄ | ㏅ | ㏆ | ㏇ | ㏈ | ㏉ | ㏊ | ㏋ | ㏌ | ㏍ | ㏎ | ㏏ |
0x33D0 | ㏐ | ㏑ | ㏒ | ㏓ | ㏔ | ㏕ | ㏖ | ㏗ | ㏘ | ㏙ | ㏚ | ㏛ | ㏜ | ㏝ | ||
0x33E0 | ㏠ | ㏡ | ㏢ | ㏣ | ㏤ | ㏥ | ㏦ | ㏧ | ㏨ | ㏩ | ㏪ | ㏫ | ㏬ | ㏭ | ㏮ | ㏯ |
0x33F0 | ㏰ | ㏱ | ㏲ | ㏳ | ㏴ | ㏵ | ㏶ | ㏷ | ㏸ | ㏹ | ㏺ | ㏻ | ㏼ | ㏽ | ㏾ |
参考
- Unicode Home Page
- Code Charts (PDF Version)
- Index of /Public/MAPPINGS/VENDORS