あなたは0xC3が「メタデータバイト」だと思いますか?
UTF-8のすべてのバイトには、コード化されたコードポイントに関する関連情報が含まれています。
UTF-8でエンコードされたコードポイントの最初のバイトは、実際の(*)と最初の数ビットのコードポイントを符号化するために使用されるバイトの総数を示すマーカー(先行1の数)が含まれコードポイント。末尾のすべてのバイトには、「継続マーカー」(ビット10
)とコード化されたコードポイントの6ビットが含まれます。
UTF-8に関するWikipediaの記事はa pretty good description of the processです。
直接コードポイント値を使用して符号化あり:UTF-32(別名UCS-4)は、基本的(*)
「を32ビット値としてコードポイント値を使用する」マーカーが実際にされています非常に簡単です:バイトが始まる場合(つまり、最上位ビットが0
の場合)、それはシングルバイトエンコーディングです(つまり0から127までのコードポイント)。 10
で始まる場合、それは継続バイトです。 110
、1110
または11110
の場合は、それぞれ2バイト、3バイトまたは4バイトシーケンスの開始です。 111110
と1111110
も同様に定義されていましたが、現代のUTF-8では有効ではなくなりました(Unicode標準では決して使用されないことが保証されている値をエンコードするためにのみ必要です)。
なぜ、文字 'é'はUTF-8で0xC3 0xA9としてエンコードされていますか? –
http://stackoverflow.com/a/4177813/107158では、UTF-8バイト0xC3A9を文字 'é'にマッピングする方法について説明しています。 –