并将网页编码方式改为unicode_刨根究底字符编码之十五——UTF-32编码方式

1.

UTF-32在UTF目前常用的三种编码方式(UTF-8、UTF-16、UTF-32)中,是最为简单的一种编码方式。UTF-32编码方式不使用任何编码算法将Unicode字符码点值(即编号字符集CCS中的字符编号)转换为码元序列,而是将每个Unicode字符码点值直接表示为一个32位的码元序列。

因此,目前UTF-32是一种固定宽度(也称为等宽、等长或定长)码元序列的Unicode字符编码方式。

2.

UTF-32中的码元由32位组成。UTF-32使用的32位码元足够大,目前Unicode字符集中所收录的每个字符的码点值都可直接映射为单个码元。

换言之,UTF-32使用一个32位的码元序列来表示Unicode字符(严格地说,是单个32位的码元,并没有形成两个或两个以上码元所组成的码元序列,除非未来Unicode码点值扩展到64位,这样才可能出现由两个32位的码元所组成的序列)。

因此,即使是ASCII字符,同样需要占用32位(即四个字节)。这在三大UTF编码方式中无疑是最为浪费存储空间的;不过,由于UTF-32是定长编码(UTF-8和UTF-16都是变长编码),因此在文本处理速度上又是三大UTF编码方式中最快的。

(笨笨阿林原创文章,转载请注明出处)

3.

由于UTF-32直接以四个字节的码元来表示码点值,这样按目前的情况来看,UCS-4或Unicode增补平面SP中的所有码点值就都可以完全直接表示,而无需像UTF-16那样使用复杂的代理算法来间接表示。

当然,如前所述,Unicode字符集是一个在不断增加字符的开放字符集,如果未来Unicode字符集的字符编号(即码点值)超过了四个字节,则UTF-32可能也需要像UTF-16一样使用某种特殊编码算法来间接表示。不过,按目前情况来看,真到了那一天,UTF-32编码方式可能也已经完全淘汰了。

4.

与UTF-16类似,作为逻辑意义上的UTF-32码元序列,由于历史的原因,在映射为物理意义上的字节序列时,也分为UTF-32BE大端序、UTF-32LE小端序两种编码模式,因此UTF-32也同样需要使用BOM。

比如,“ABC”这三个字符的UTF-32码元序列为:00 00 00 41 00 00 00 42 00 00 00 43;其对应的各种字节序列如下:

1bf07a9df19387970e84875e5268e75d.png

每个UTF-32码元的值与Unicode码点的值完全相同,但其字节序列因字节序的不同而表现为有相同也有不同。

5.

由于UTF-32在三大UTF编码方式中,既不是最早推出的编码方式(最早推出的是UTF-16),也不是最优设计的编码方式(公认为最优设计的是UTF-8),因此在实践中使用得最少,目前几乎已处于淘汰状态。

(笨笨阿林原创文章,转载请注明出处)

(未完待续)

上一篇:刨根究底字符编码之十四——UTF-16究竟是怎么编码的 - 知乎专栏

下一篇:刨根究底字符编码之十六——Windows记事本的诡异怪事:微软为什么跟联通有仇? - 知乎专栏

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值