技術情報
ユニコード
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バイト文字の先頭バイトです。
