【转】刨根究底字符编码之十五——UTF-32编码方式
1.
UTF-32在UTF目前常用的三種編碼方式(UTF-8、UTF-16、UTF-32)中,是最為簡(jiǎn)單的一種編碼方式。UTF-32編碼方式不使用任何編碼算法將Unicode字符碼點(diǎn)值(即編號(hào)字符集CCS中的字符編號(hào))轉(zhuǎn)換為碼元序列,而是將每個(gè)Unicode字符碼點(diǎn)值直接表示為一個(gè)32位的碼元序列。
因此,目前UTF-32是一種固定寬度(也稱為等寬、等長(zhǎng)或定長(zhǎng))碼元序列的Unicode字符編碼方式。
2.
UTF-32中的碼元由32位組成。UTF-32使用的32位碼元足夠大,目前Unicode字符集中所收錄的每個(gè)字符的碼點(diǎn)值都可直接映射為單個(gè)碼元。
換言之,UTF-32使用一個(gè)32位的碼元序列來(lái)表示Unicode字符(嚴(yán)格地說(shuō),是單個(gè)32位的碼元,并沒(méi)有形成兩個(gè)或兩個(gè)以上碼元所組成的碼元序列,除非未來(lái)Unicode碼點(diǎn)值擴(kuò)展到64位,這樣才可能出現(xiàn)由兩個(gè)32位的碼元所組成的序列)。
因此,即使是ASCII字符,同樣需要占用32位(即四個(gè)字節(jié))。這在三大UTF編碼方式中無(wú)疑是最為浪費(fèi)存儲(chǔ)空間的;不過(guò),由于UTF-32是定長(zhǎng)編碼(UTF-8和UTF-16都是變長(zhǎng)編碼),因此在文本處理速度上又是三大UTF編碼方式中最快的。
(笨笨阿林原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處)
3.
由于UTF-32直接以四個(gè)字節(jié)的碼元來(lái)表示碼點(diǎn)值,這樣按目前的情況來(lái)看,UCS-4或Unicode增補(bǔ)平面SP中的所有碼點(diǎn)值就都可以完全直接表示,而無(wú)需像UTF-16那樣使用復(fù)雜的代理算法來(lái)間接表示。
當(dāng)然,如前所述,Unicode字符集是一個(gè)在不斷增加字符的開(kāi)放字符集,如果未來(lái)Unicode字符集的字符編號(hào)(即碼點(diǎn)值)超過(guò)了四個(gè)字節(jié),則UTF-32可能也需要像UTF-16一樣使用某種特殊編碼算法來(lái)間接表示。不過(guò),按目前情況來(lái)看,真到了那一天,UTF-32編碼方式可能也已經(jīng)完全淘汰了。
4.
與UTF-16類似,作為邏輯意義上的UTF-32碼元序列,由于歷史的原因,在映射為物理意義上的字節(jié)序列時(shí),也分為UTF-32BE大端序、UTF-32LE小端序兩種編碼模式,因此UTF-32也同樣需要使用BOM。
比如,“ABC”這三個(gè)字符的UTF-32碼元序列為:00 00 00 41 00 00 00 42 00 00 00 43;其對(duì)應(yīng)的各種字節(jié)序列如下:
每個(gè)UTF-32碼元的值與Unicode碼點(diǎn)的值完全相同,但其字節(jié)序列因字節(jié)序的不同而表現(xiàn)為有相同也有不同。
5.
由于UTF-32在三大UTF編碼方式中,既不是最早推出的編碼方式(最早推出的是UTF-16),也不是最優(yōu)設(shè)計(jì)的編碼方式(公認(rèn)為最優(yōu)設(shè)計(jì)的是UTF-8),因此在實(shí)踐中使用得最少,目前幾乎已處于淘汰狀態(tài)。
(笨笨阿林原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處)
總結(jié)
以上是生活随笔為你收集整理的【转】刨根究底字符编码之十五——UTF-32编码方式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 银行也会倒闭?划重点!这三种情况银行不赔
- 下一篇: 发债中签后什么时候卖?发债卖不出去是什么