【转】刨根究底字符编码之十五——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;其对应的各种字节序列如下:
每个UTF-32码元的值与Unicode码点的值完全相同,但其字节序列因字节序的不同而表现为有相同也有不同。
5.
由于UTF-32在三大UTF编码方式中,既不是最早推出的编码方式(最早推出的是UTF-16),也不是最优设计的编码方式(公认为最优设计的是UTF-8),因此在实践中使用得最少,目前几乎已处于淘汰状态。
(笨笨阿林原创文章,转载请注明出处)
【转】刨根究底字符编码之十五——UTF-32编码方式相关推荐
- 流媒体技术学习笔记之(十五)FFmpeg编码遇到的错误、警告、Debug记录
When encoding H.264 using ffmpeg I get the following type of warnings en masse: Past duration 0.6063 ...
- java编程心得(十五)——将Unicode编码转换为汉字
本代码针对Java语言,函数传入汉字的Unicode编码字符串,返回相应的汉字字符串,具体代码如下: public String convert(String utfString){StringBui ...
- 【转】刨根究底字符编码之十六——Windows记事本的诡异怪事:微软为什么跟联通有仇?
1. 当用一个软件(比如Windows记事本或Notepad++)打开一个文本文件时,它要做的第一件事是确定这个文本文件究竟是使用哪种编码方式保存的,以便于该软件对其正确解码,否则将显示为乱码. 一般 ...
- 【转】刨根究底字符编码之十二——UTF-8究竟是怎么编码的
UTF-8究竟是怎么编码的 1. UTF-8编码是Unicode字符集的一种字符编码方式(CEF),其特点是使用变长字节数(即变长码元序列或称变宽码元序列)来编码.目前一般是1到4个字节,当然,也可以 ...
- 【转】刨根究底字符编码之十——Unicode字符集的字符编码方式
一.字符编码方式CEF的选择 1. 由于Unicode字符集非常大(并且作为开放字符集还在不断扩展之中),有些字符的编号(即码点值)需要两个或两个以上字节来表示,而要对这样的编号进行编码,也必须使用两 ...
- 【转】刨根究底字符编码之零——前言
前言 一. 字符编码是计算机世界里最基础.最重要的一个主题之一.不过,在计算机教材中却往往浮光掠影般地草草带过,甚至连一本专门进行深入介绍的著作都找不到(对这一点我一直很困惑,为什么就没有哪位大牛对这 ...
- 【转】刨根究底字符编码之十一——UTF-8编码方式与字节序标记BOM
一.UTF-8编码方式 1. 接下来将分别介绍Unicode字符集的三种编码方式:UTF-8.UTF-16.UTF-32.这里先介绍应用最为广泛的UTF-8. 为满足基于ASCII.面向字节的字符处理 ...
- 【转】刨根究底字符编码之二——关键术语解释(下)
关键术语解释(下) 如前所述,现代字符编码模型共分为5层,下面分层进行简要介绍. 一.第1层 抽象字符表ACR (Abstract Character Repertoire抽象字符清单):明确字符的范 ...
- 第十五章 IO流(转换流 字符流 字符缓冲流 打印流)
Java基础15 第十五章 IO流(转换流 字符流 字符缓冲流 打印流) 15.1 字符编码和字符集 15.1.1 字符编码 15.1.2 字符集 15.1.3 String类getBytes()方法 ...
最新文章
- 独家 | 一文读懂人工神经网络
- cordova常用命令
- 访问者模式讨论篇:java的动态绑定与双分派
- 面对重重问题 光伏扶贫路在何方?
- Java平台无关性——跨平台
- Android2D绘图一
- vSphere 7融合Kubernetes,构建现代化应用的平台
- python作业第四周答案_Python3第四周作业——员工信息表程
- [原创]Xcode 4.6 安装 Boost 1.53.0
- C Primer Plus 第13章 文件输入/输出 13.11 编程练习答案
- 设计模式-Builder Pattern
- Hive Tuning(三) 从查询计划看hive.auto.convert.join的好处
- HDU 1789 Doing Homework again(贪心)
- java 汽车租赁系统
- SQL Server 2008 R2的完全卸载
- BCH的51攻击与防守
- transformation-matrix
- 从 Quora 的 187 个问题中学习机器学习和 NLP
- 鼠标抖动问题(macbook下安装的win7系统)
- LaMDA 不可能觉醒吗?
热门文章
- sql(join on 和where的执行顺序)
- SGU495 Kids and Prizes 概率DP,期望公式
- 微信公众平台-杂项:小程序导航
- 通过tomcat日志定位错误
- Android之View绘制流程开胃菜---setContentView(...)详细分析
- java 实现微博,QQ联合登录
- JS 判断滚动底部并加载更多效果。。。。。。。。。
- 启动文件、简单的消息框
- 基于live555的视频直播 DM368IPNC RTSP分析
- mysql参数化查询为什么可以实现_为什么参数化SQL查询可以防止SQL注入?