UnicodeとUTF-8の関係

1119 ワード

作者:邱昊宇
リンク:https://www.zhihu.com/question/23374078/answer/24385963
出典:知っている
著作権は作者の所有である.商業転載は著者に連絡して許可を得てください.非商業転載は出典を明記してください.
簡単に言えば、
  • Unicodeは「文字セット」
  • UTF-8は「符号化規則」
  • 次のようになります.
  • 文字セット:各「文字」に一意のID(コードビット/コードポイント/コードポイント)
  • を割り当てる.
  • 符号化ルール:「符号ビット」をバイトシーケンスに変換するルール(符号化/復号化は暗号化/復号化のプロセスと理解できる)
  • .
    一般化されたUnicodeは、Unicode文字セットとUTF-8、UTF-16、UTF-32などの符号化ルールを定義する標準である.
    Unicode文字セットは、各文字に1つの符号ビットを割り当て、例えば「知」の符号ビットは30693であり、U+77 E 5(30693の16進法は0 x 77 E 5)と記す.UTF-8は、その名の通り、8ビットを1つの符号化単位とする可変長符号化のセットである.1つのコードビットは1~4バイトでエンコードされます.
    U+ 0000 ~ U+ 007F: 0XXXXXXX
    U+ 0080 ~ U+ 07FF: 110XXXXX 10XXXXXX
    U+ 0800 ~ U+ FFFF: 1110XXXX 10XXXXXX 10XXXXXX
    U+10000 ~ U+1FFFF: 11110XXX 10XXXXXX 10XXXXXX 10XXXXXX
    

    上の表の符号化規則によると、前の「知」字の符号ビットU+77 E 5は3行目の範囲に属する.
           7    7    E    5    
        0111 0111 1110 0101      77E5
    --------------------------
        0111   011111   100101   77E5
    1110XXXX 10XXXXXX 10XXXXXX  ( )
    11100111 10011111 10100101  
       E   7    9   F    A   5
    

    これがU+77 E 5をUTF-8に従ってバイトシーケンスE 79 FA 5に符号化するプロセスである.逆もまた然り.