UTF-8
- 1文字1~4バイトの可変長
- 英数字(ASCII文字) は1バイト、ASCIIコードと互換性がある
- その他の欧文は2バイト
- メジャーな漢字や日本語の文字は3バイト (全角英数字、半角カナ含む)
- マイナーな漢字や絵文字は4バイト
- Webページなど、アプリケーションの入出力形式・保存形式によく使われる
UTF-32
- すべての文字が1文字4バイトの固定長
- 処理は簡単だが、メモリ効率は良くない
UTF-8のエンコード
- 1バイト文字 (U+0000~U+007F):0固定+7bit
- 2バイト文字 (U+0080~U+07FF):(110固定+5bit) + (10固定+6bit) = 合計11bit
- 3バイト文字 (U+0800~U+FFFF):(1110固定+4bit) + (10固定+6bit) + (10固定+6bit) = 合計16bit
- 4バイト文字 (U+10000~U+10FFFF):(11110固定+3bit) + (10固定+6bit) + (10固定+6bit) + (10固定+6bit) = 合計21bit
- 最上位bitが 10 でないバイトを数えれば文字数が分かる
Unicodeのブロック概略
詳細は ブロック (Unicode) - Wikipedia を参照。
基本多言語面のブロックの概略は下記の通り。
範囲 | ブロック名 | 主な対応言語 |
---|---|---|
U+0000..U+007F | 基本ラテン文字 | 英語 (ASCII文字と互換) |
U+0080..U+00FF | ラテン1補助 | UTF-8ではここから2バイト文字 ドイツ語、フランス語など西欧と北欧の言語 |
U+0100..U+017F | ラテン文字拡張A | チェコ語、ポーランド語など東欧のラテン文字言語 |
U+0180..U+024F | ラテン文字拡張B | 特殊なラテン文字、非欧州のラテン文字言語 |
U+0250..U+02AF | IPA拡張 | IPA(国際音声記号) |
U+02B0..U+036F | (いろいろ) | ダイアクリティカルマークなど |
U+0370..U+03FF | ギリシア文字 | ギリシャ語 |
U+0400..U+04FF | キリル文字 | ロシア語など東欧のキリル文字言語 |
U+0500..U+052F | キリル文字補助 | 特殊なキリル文字 |
U+0530..U+07FF | (いろいろ) | アラビア語、ヘブライ語など中東の言語 |
U+0800..U+2DFF | (いろいろ) | UTF-8ではここから3バイト文字 ヒンディー語などインド、東南アジアの言語、その他 |
U+3000..U+303F | CJKの記号 | 句読点など |
U+3040..U+309F | 平仮名 | ひらがな |
U+30A0..U+30FF | 片仮名 | カタカナ |
U+3100..U+4DFF | (いろいろ) | 東アジアの特殊な文字、記号 |
U+4E00..U+9FFF | CJK統合漢字 | 漢字 |
U+A000..U+FFFF | (いろいろ) | その他 ハングル(U+AC00~U+D7A3) 全角英数字(U+FF21~U+FF5A) 半角カタカナ(U+FF61~U+FF9F) |