技術情報
ユニコード
JIS、シフトJIS、EUC_JPはいずれも、日本語だけを対象にした文字コードです。他の言語の文字に対しては互換性がありません。それに対して「ユニコード」は世界中のあらゆる言語を対象にし、すべての文字を一つの文字コードで表そうという試みです。現在、漢字に対しては日本、中国(簡体字、繁体字)の漢字を一つの文字集合にまとめたものが実用化されています。ユニコードの特徴は以下のとおりです。
- ユニコードを使えば、一つの文書の中で日本語、中国語を混在させた表現が可能です。
- 同じような書体の文字は元の文字集合とは関係なく同じコードを割り振られています。このため、JISコードからユニコードへの変換、その逆の変換はいずれも計算ではできず、変換テーブルを参照して変換する必要があります。
- Windows2000、XPとでは内部コードとしてこのユニコードを使用しています。
ユニコードは32ビット(00000000-FFFFFFFF)を使用する膨大な量の文字を指定できる構想ですが、現在はそのうち16ビット(00000000-0000FFFF)が規定されています。0000を略して、通常は0000-FFFFの16ビットを指して、「ユニコード」と称しています。
ユニコードに指定されている文字は以下の表のとおりです。
名称 | 説明 | コード |
---|---|---|
Bacic Latin | ラテン文字 | 0x0020-0x007F |
Latin-1 Supplement | ラテン文字拡張 | 0x0080-0x00FF |
Latin Extended-A | ラテン文字拡張A | 0x0100-0x017F |
Latin Extended-B | ラテン文字拡張B | 0x0180-0x024F |
IPA Extensions | 国際発音記号 | 0x0250-0x02AF |
Spacing Modifier Letters | 国際発音記号 長音記号、アクセント記号 | 0x02B0-0x02FF |
Combining Diacritical Marks | 国際発音記号 合成用記号 | 0x0300-0x036F |
Greek and Coptic | ギリシャ文字 | 0x0370-0x03FF |
Cyrillic | キリル文字 | 0x0400-0x04FF |
Cyrillic Supplementary | キリル文字 | 0x0500~0x052F |
Armenian | アルメニア文字 | 0x0530-0x058F |
Hebrew | ヘブライ文字 | 0x0590-0x05FF |
Arabic | アラビア文字 | 0x0600-0x06FF |
Syriac | シリア文字 | 0x0700-0x074F |
Thaana | ターナ文字(モルディブ) | 0x0780-0x07BF |
Devanagari | デーバナーガリ文字(インド・サンスクリット語、ヒンディー語、マラーティー語、ネパール語) | 0x0900-0x097F |
Bengali | ベンガル文字(インド・ベンガル語) | 0x0980-0x09FF |
Gurmukhi | グルムキー文字(インド・パンジャブ語) | 0x0A00-0x0A7F |
Gujarati | グジャラート文字(インド・グジャラート語) | 0x0A80-0x0AFF |
Oriya | オリヤ文字(インド・オリヤ語) | 0x0B00-0x0B7F |
Tamil | タミル文字(インド・タミル語) | 0x0B80-0x0BFF |
Telugu | テルグ文字(インド・テルグ語) | 0x0C00-0x0C7F |
Kannada | カンナダ文字(インド・カンナダ語) | 0x0C80-0x0CFF |
Malayalam | マラヤラム文字(インド・マラヤラム語) | 0x0D00-0x0D7F |
Sinhala | シンハラ文字(インド・シンハラ語) | 0x0D80-0x0DFF |
Thai | タイ文字 | 0x0E00-0x0E7F |
Lao | ラオ文字(ラオス) | 0x0E80-0x0EFF |
Tibetan | チベット文字 | 0x0F00-0x0FFF |
Myanmar | ミャンマー文字 | 0x1000-0x109F |
Georgian | グルジア文字 | 0x10A0-0x10FF |
Hangul Jamo | ハングル字母 | 0x1100-0x11FF |
Ethiopic | アムハラ文字(エチオピア) | 0x1200-0x137F |
Cherokee | チェロキー文字(アメリカ先住民) | 0x13A0-0x13FF |
Unified Canadian Aboriginal Syllabic | 統合カナダ先住民音節 | 0x1400-0x167F |
Ogham | オーガム文字(アイルランド古代) | 0x1680-0x169F |
Runic | ルーニック文字(イギリス古代) | 0x16A0-0x16FF |
Tagalog | タガログ文字(フィリピン) | 0x1700-0x171F |
Hanunoo | ハノヌオ文字(フィリピン) | 0x1720-0x173F |
Buhid | ブーヒッド文字(フィリピン) | 0x1740-0x175f |
Tagbanwa | タグバンワ文字(フィリピン) | 0x1760-0x177F |
Khmer | クメール文字(カンボジア) | 0x1780-0x17FF |
Mongolian | モンゴル文字 | 0x1800-0x18AF |
Latin Extended Additional | ラテン文字拡張追加 | 0x1E00-0x1EFF |
Greek Extended | ギリシア文字拡張 | 0x1F00-0x1FFF |
General Punctuation | 一般句読点 | 0x2000-0x206F |
Superscripts and Subscripts | 上付き・下付き文字 | 0x2070-0x209F |
Currency Symbols | 通貨記号 | 0x20A0-0x20CF |
Combining Marks for Symbols | 半記号(合成可能) | 0x20D0-0x20FF |
Letterlike Symbols | 文字様記号 | 0x2100-0x214F |
Number Forms | 数字に準じるもの | 0x2150-0x218F |
Arrows | 矢印 | 0x2190-0x21FF |
Mathematical Operators | 数学記号 | 0x2200-0x22FF |
Miscellaneous Technical | その他の技術用記号 | 0x2300-0x23FF |
Control Pictures | 制御機能用記号 | 0x2400-0x243F |
Optical Character Recognition | 光学的文字認識 | 0x2440-0x245F |
Enclosed Alphanumerics | 囲み英数字 | 0x2460-0x24FF |
Box Drawing | 罫線素辺 | 0x2500-0x257F |
Block Elements | ブロック要素 | 0x2580-0x259F |
Geometric Shapes | 幾何学模様 | 0x25A0-0x25FF |
Miscellaneous Symbols | その他の記号 | 0x2600-0x26FF |
Dingbats | 装飾記号 | 0x2700-0x27BF |
Miscellaneous Mathematical Symbols-A | その他の数学記号A | 0x27CF-0x27EF |
Supplemental Arrows-A | 矢印追加A | 0x27F0-0x27FF |
Braille Patterns | 点字図形 | 0x2800-0x28FF |
Supplemental Arrows-B | 矢印追加B | 0x2900-0x297F |
Miscellaneous Mathematical Symbols-B | その他の数学記号B | 0x2980-0x29FF |
Supplemental Mathematical Operators | その他の数学記号 | 0x2A00-0x2AFF |
CJK Radicals Supplement | CJK部首補助 | 0x2E80-0x2EFF |
Kangxi Radicals | 康煕部首 | 0x2F00-0x2FDF |
Ideographic Description Characters | 漢字構成記述文字 | 0x2FF0-0x2FFF |
CJK Symbols and Punctuation | CJKの記号及び句読点 | 0x3000-0x303F |
Hiragana | 平仮名 | 0x3040-0x309F |
Katakana | 片仮名 | 0x30A0-0x30FF |
Bopomofo | 注音字母 | 0x3100-0x312F |
Hangul Compatibility Jamo | ハングル互換字母 | 0x3130-0x318F |
Kanbun | 漢文用記号 | 0x3190-0x319F |
Bopomofo Extended | 注音字母拡張 | 0x31A0-0x31BF |
Enclosed CJK Letters and Months | 囲みCJK文字・月 | 0x3200-0x32FF |
CJK Compatibility | CJK互換漢字 | 0x3300-0x33FF |
CJK Unified Ideographs Extension A | CJK統合漢字拡張A | 0x3400-0x4DBF |
CJK Unified Ideographs | CJK統合漢字 | 0x4E00-0x9FAF |
Yi Syllables | イ文字(中国) | 0xA000-0xA48F |
Yi Radicals | イ文字部首 | 0xA490-0xA4CF |
Hangul Syllables | ハングル音節文字 | 0xAC00-0xD7AF |
CJK Compatibility Ideographs | CJK互換漢字 | 0xF900-0xFAFF |
Alphabetic Presentation Forms | アルファベット表示形A | 0xFB00-0xFB4F |
Arabic Presentation Forms-A | アラビア表示形A | 0xFB50-0xFDFF |
Combining Half Marks | 半記号(合成可能) | 0xFE20-0xFE2F |
CJK Compatibility Forms | CJK互換形 | 0xFE30-0xFE4F |
Small Form Variants | 小字形 | 0xFE50-0xFE6F |
Arabic Presentation Forms-B | アラビア表示形B | 0xFE70-0xFEFF |
Halfwidth and Fullwidth Forms | 半角・全角形 | 0xFF00-0xFFEF |
Specials | 特殊用途文字 | 0xFFF0-0xFFFF |
utf-8
実際の文字コードにはユニコードをほぼそのまま使うutf-16と、ASCIIと共存可能なutf-8の二種類が使われています。インターネットではutf-8が使われます。
このエンコードでは下の表のようにビット列を加工し、ASCIIの文字は1バイトに、漢字(2バイト文字)は3バイトにして表現します。
utf-8のエンコード法 | ||
---|---|---|
範囲 | エンコード前のビット列 | エンコード後のビット列 |
0x0000~0x007F | 00000000 0aaaaaaa | 0aaaaaaa |
0x0080~0x07FF | 00000aaa bbbbbbbb | 110aaabb 10bbbbbb |
0x0800~0xFFFF | aaaaaaaa bbbbbbbb | 1110aaaa 10aaaabb 10bbbbbb |
エンコードされた文字列では、1バイトごとに次のように判別が可能です。
- 先頭の1ビットが「0」(0x00~0x7F)は1バイト文字または制御コードです。
- 先頭の2ビットが「10」(0x80~0xBF)は2バイトまたは3バイト文字の後続バイトです。
- 先頭の3ビットが「110」(0xC0~0xDF)は2バイト文字の先頭バイトです。
- 先頭の4ビットが「1110」(0xE0~0xEF)は3バイト文字の先頭バイトです。