欧美经典成人在观看线视频_嫩草成人影院_国产在线精品一区二区中文_国产欧美日韩综合二区三区

ascall碼表(Unicode 字符集和 UTF8UTF16UTF32 編碼)

ascall碼表(Unicode 字符集和 UTF8UTF16UTF32 編碼)

聞冰真 2025-04-15 科技 26 次瀏覽 0個(gè)評論
ASCII碼

在較早的計(jì)算時(shí)代,ASCII 代碼用于表示字符。英語只有 26 個(gè)字母和一些其他特殊字符和符號。

下表是 ASCII 碼對照表,包含字符及其相應(yīng)的十進(jìn)制和十六進(jìn)制值。

Unicode 字符集和 UTF-8、UTF-16、UTF-32 編碼

ASCII 碼對照表

從上表可以推斷出,ASCII 值可以在十進(jìn)制數(shù)系統(tǒng)中表示為 0 到 127。讓我們看看 0 和 127 在 8 位字節(jié)中的二進(jìn)制表示。

0 表示為

Unicode 字符集和 UTF-8、UTF-16、UTF-32 編碼

0 的二進(jìn)制表示

127表示為

Unicode 字符集和 UTF-8、UTF-16、UTF-32 編碼

127 二進(jìn)制表示

從上面的二進(jìn)制表示可以推斷,十進(jìn)制值 0 到 127 可以使用 7 位來表示,而第 8 位是空閑的。

警告 從這個(gè)地方起,混亂開始了。

人們想出了不同的方法來使用剩余的第八位,從而使其可以表示從 128 到 255 的十進(jìn)制值。那么沖突就發(fā)生了。例如,越南人使用十進(jìn)制值 182 來表示越南字母 ?,而印度人使用相同的值 182 來表示印地語字母?。因此,如果印度人寫的電子郵件包含字母?并且它被越南人閱讀,那么將會顯示為?。顯然這不是預(yù)期的效果。

那么如何解決這個(gè)問題呢,接下來就該 Unicode 出場了。

Unicode 和代碼點(diǎn)

Unicode 字符集將世界上的每個(gè)字符都映射到一個(gè)唯一的數(shù)字上。這確保了不同語言的字母之間沒有沖突。這些數(shù)字與平臺無關(guān)。

這些唯一的數(shù)字在 unicode 術(shù)語中稱為代碼點(diǎn)。

讓我們看看它們是如何被引用的。

使用代碼點(diǎn)引用 拉丁字符?

U+1E4D

U+ 表示 unicode,1E4D是分配給字符 ? 的十六進(jìn)制值。

英文字母A表示為 U+0041

好了,了解了這些,接下來該是重頭戲了

UTF-8 編碼

現(xiàn)在我們知道什么是 unicode 以及如何將世界上的每個(gè)字母分配給一個(gè)唯一的代碼點(diǎn),我們需要一種在計(jì)算機(jī)內(nèi)存中表示這些代碼點(diǎn)的方法。這就是字符編碼登場的地方。 其中最為人們所熟知的就是 UTF-8 編碼。

UTF-8 編碼是一種大小可變的編碼方案,用于表示內(nèi)存中的 unicode 代碼點(diǎn)。大小可變編碼意味著代碼點(diǎn)根據(jù)其大小使用 1、2、3 或 4 個(gè)字節(jié)表示。

UTF-8 1 字節(jié)編碼

1個(gè)字節(jié)編碼的標(biāo)識是第一個(gè)比特位為0。

Unicode 字符集和 UTF-8、UTF-16、UTF-32 編碼

UTF8 1字節(jié)編碼表示方式

英文字母A的 unicode 代碼點(diǎn)為 U+0041。它的二進(jìn)制表示是1000001。

A 以 UTF-8 編碼表示為

01000001

紅色的0位表示使用1字節(jié)編碼,其余位代表碼位

UTF-8 2 字節(jié)編碼

代碼點(diǎn)為 U+00F1 的拉丁字母?的二進(jìn)制值11110001。該值大于可以使用 1 字節(jié)編碼格式表示的最大值,因此該字母表將使用 UTF-8 2 字節(jié)編碼表示。

2 字節(jié)編碼的方式是由第一個(gè)字節(jié)比特位中的高三位的比特序列110和第二個(gè)字節(jié)比特位中的高二位的比特序列10來標(biāo)識。

Unicode 字符集和 UTF-8、UTF-16、UTF-32 編碼

UTF8 2字節(jié)編碼方式表示

Unicode 代碼點(diǎn)U+00F1的二進(jìn)制值是1111 0001。用2字節(jié)編碼格式填充這些位,我們得到如下所示的?的UTF-8 2字節(jié)編碼表示。

填充是從映射到第二個(gè)字節(jié)的最低有效位的代碼點(diǎn)的最低有效位開始完成的。

1100001110110001

藍(lán)色的二進(jìn)制數(shù)字11110001代表碼位U+00F1的二進(jìn)制值,紅色的是2字節(jié)編碼標(biāo)識符。黑色零用于填充字節(jié)中的空位。

UTF-8 3 字節(jié)編碼

具有代碼點(diǎn)U+1E4D的拉丁字符?使用 3 字節(jié)編碼表示,因?yàn)樗笥谑褂?2 字節(jié)編碼可以表示的最大值。

3 字節(jié)編碼通過第一個(gè)字節(jié)中的位序列1110 和第二個(gè)和第三個(gè)字節(jié)中的 10的存在來標(biāo)識。

Unicode 字符集和 UTF-8、UTF-16、UTF-32 編碼

UTF8 3字節(jié)編碼表示

? 十六進(jìn)制代碼點(diǎn) 0x1E4D,對應(yīng)的二進(jìn)制值為1111001001101。將這些位填充到上述編碼格式中,我們得到了下面所示的 ? 的UTF-8 3 字節(jié)編碼表示。

填充是從映射到第三個(gè)字節(jié)的最低有效位的代碼點(diǎn)的最低有效位開始進(jìn)行的。

111000011011100110001101

紅色位表示 3 字節(jié)編碼,黑色位是填充位,藍(lán)色位表示代碼點(diǎn)。

UTF-8 4 字節(jié)編碼

表情符號的Unicode代碼點(diǎn)U+1F62D。這大于可以使用 3 字節(jié)編碼表示的最大值,因此將使用 4 字節(jié)編碼表示。

4 字節(jié)編碼通過第一個(gè)字節(jié)中的11110和隨后的第二個(gè)、第三個(gè)和第四個(gè)字節(jié)中的10來標(biāo)識。

Unicode 字符集和 UTF-8、UTF-16、UTF-32 編碼

UTF8 4字節(jié)編碼表示

U+1F62D的二進(jìn)制表示是11111011000101101。將這些位填入上述編碼格式,我們就得到了的UTF-8 4字節(jié)編碼。代碼點(diǎn)的最低有效位映射到第四個(gè)字節(jié)的最低有效位,依此類推。

11110000100111111001100010101101

紅色位標(biāo)識4字節(jié)編碼格式,藍(lán)色位是實(shí)際碼位,黑色位是填充位。

上面我們分別對 UTF-8 的幾種編碼方式進(jìn)行了詳細(xì)的介紹。接下來我們順帶介紹一下 UTF-16 和 UTF-32 編碼方式

UTF-16 編碼

UTF-16 編碼是一種可變字節(jié)編碼方案,它使用 2 個(gè)字節(jié)或 4 個(gè)字節(jié)來表示 unicode 代碼點(diǎn)。所有現(xiàn)代語言的大多數(shù)字符都使用 2 個(gè)字節(jié)表示。

拉丁字母?的Unicode代碼點(diǎn)為 U+00F1 二進(jìn)制表示為 11110001 。其 UTF-16 編碼表示為

0000000011110001

上面的表示是在 Big Endian 字節(jié)順序模式下(最高有效位在前)。

UTF-32 編碼

UTF-32 編碼是一種固定字節(jié)編碼方案,它使用 4 個(gè)字節(jié)來表示所有代碼點(diǎn)。

英文字母 A 具有 Unicode 代碼點(diǎn) U+0041。它的二進(jìn)制表示是 1000001。

它以UTF-32編碼表示,如下所示,

00000000 00000000 00000000 01000001

藍(lán)色位是代碼點(diǎn)的二進(jìn)制表示。上面的表示是在 Big Endian 字節(jié)順序模式下。

以上就是關(guān)于字符集和字符編碼的所有內(nèi)容。

轉(zhuǎn)載請注明來自夕逆IT,本文標(biāo)題:《ascall碼表(Unicode 字符集和 UTF8UTF16UTF32 編碼)》

每一天,每一秒,你所做的決定都會改變你的人生!

發(fā)表評論

快捷回復(fù):

評論列表 (暫無評論,26人圍觀)參與討論

還沒有評論,來說兩句吧...