UTF-8 概要
UTF-8 は, Unicode の可変長文 文字 号化 , 万国コードとも呼ばれる .
UTF-8 用 1 まで 6 バイトコーディング UNICODE字符.
UTF-8 コーディング規則
1バイトのみの場合,最大バイナリビットは 0;
マルチバイトの場合 , 最初のバイトは最上 ビット から始まる , 連続するバイナリビット値は 1 の個 数 によってエンコードされるバイト数が決まります , 残りのバイトはすべて 10 先頭 .
Unicode/UCS-4 | bit数 | UTF-8 | byte数 | コメント |
0000~ 007F | 0~7 | 0XXX XXXX | 1 | |
0080~ 07FF | 8~11 | 110X XXXX 10XX XXXX | 2 | |
0800~ FFFF | 12~16 | 1110XXXX 10XX XXXX 10XX XXXX | 3 | 基本定義範囲 :0~FFFF |
1 0000~ 1F FFFF | 17~21 | 1111 0XXX 10XX XXXX 10XX XXXX 10XX XXXX | 4 | Unicode6.1 範囲の定義 :0~10 FFFF |
20 0000~ 3FF FFFF | 22~26 | 1111 10XX 10XX XXXX 10XX XXXX 10XX XXXX 10XX XXXX | 5 | 説明 : この非 unicode コーディング範囲 , 所属 UCS-4 エンコード 初期の仕様 UTF-8 まで 達可能 6 バイトシーケンス , 上書き可能 31 ビットエレメント ( 共通文字セットの元の限界 ). それでも ,2003 年 11 月 UTF-8 被 RFC 3629 再仕様 , 元のものしか使えない Unicode 定義された領域 ,U+0000到U+10FFFF. 仕様による , これらのバイト値は合法的には表示されません UTF-8 シーケンス内 |
400 0000~ 7FFF FFFF | 27~31 | 1111 110X 10XX XXXX 10XX XXXX 10XX XXXX 10XX XXXX 10XX XXXX | 6 |
UTF-8 利点
UTF-8 エンコードは,シールドビットとシフト操作によって迅速に読み書きすることができます . 文字列比較時 strcmp() と wcscmp() の戻り値と同じ結果 , そのため,ソートが容易になります . バイト数 FF と FE にある UTF-8 コードには決して現れません , だから彼らは UTF-16 または UTF-32 テキスト ( 見て BOM) UTF-8 バイト順序に依存しない . そのバイト順はすべてのシステムで同じです , だから実際には必要ありません BOM.
UTF-8 欠点
あなたは UNICODE 文字数判定 UTF-8 テキストのバイト数 , なぜなら UTF-8 可変長符号化のために必要なものです 2 個のバイトを符号化するための拡張 ASCII 文字セットは必要です 1 バイト文字 ISO Latin-1 はい UNICODE のサブセット , でも違う UTF-8 のサブセット 8 ビットキャラクタ UTF-8 コードは email ゲートウェイフィルタリング , なぜなら internet 情報は最初に 7位ASCII コード . だから生まれた UTF-7 エンコード . UTF-8 その表現に値を使用する 100xxxxx の確率が 50%, 現存する実現は ISO 2022, 4873, 6429, と 8859 システム , と勘違いしてしまいます C1 せいぎょコード . だから生まれた UTF-7.5 エンコード .