首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Unicode 及编码方式概述-3

Unicode 及编码方式概述-3

UTF-32(UCS-4)编码方式
UTF-32 是一个以固定四字节编码方式,ISO 10646 中称其为 UCS-4 的编码机制的子集。优点是每一个 Unicode 码点都和                UTF-16 的 Code Unit 一一对应,程序中如果采用 UTF-32                处理起来比较简单,但是所有的字符都用四个字节,特别浪费空间,所以实际上使用比较少。其特性如图 6 所示。
图 8. UTF-32 编码
1
UTF-16 和 UTF-32 的最小 Code Unit(编码单元)是双字节即 16 个比特位,即多字节编码方式,因此这两种编码方式都存在字节序标记(BOM)问题。




  • Big-EndianBE)即大端序就是高位字节(即大端字节)存放在内存的低地址,低位字节(即小端字节)存放在内存的高地址。UTF-16(BE)以                    FEFF 作为开头字节,UTF-32(BE)以 00 00 FE FF 作为开头字节;
  • Little-Endian                        (LE)即小端序低位字节(即小端字节)存放在内存的低地址,而高位字节(即大端字节)存放在内存的高地址。UTF-16(LE)以                    FFFE 作为开头字节,UTF-32(LE)以 FF FE 00 00 作为开头字节。
  • UTF-8 不需要 BOM 来表明字节顺序:可以用 BOM(EF BB                    BF 称为零宽无间断间隔)来表明编码方式,如果接收者收到以 EF BB BF 开头的字节流,就知道这是 UTF-8 编码。
表 1. Unicode                    编码方式中的 BOM
UTF-8UTF-16
UTF-16LEUTF-16BEUTF-32UTF-32LE最小 code                            point
0000                             0000  0000  0000  0000  0000 最大 code                                point 10FFFF                             10FFFF  10FFFF  10FFFF  10FFFF  10FFFF Code Unit 8 bits  16 bits  16 bits  16 bits  32 bits  32 bits 字节序 N/A  BOM  小端序  大端序  BOM  小端序 编码最小字节数 1  2  2  2  4  4
备注:表 1 中标着 BOM 的地方表示根据文本头部的字节序确定,如果没有字节序,默认为 BE 即大端序编码。表 2 是几种 Unicode                编码方式示例对比:
表 2. Unicode                    编码示例字符
码点
十六进制码点
二进制
编码方式编码序列
(二进制)编码序列
(十六进制)基本
平面 ¢  U+00A2  1010 0010  UTF-8


UTF-16                           


UTF-16BE

UTF-16LE

UTF-32                           



UTF-32BE

UTF-32LE  1100 0010 1010 0010

                            0000 0000 1010 0010







                            1111 0000 1010 0100
1010 1101 1010 0010  C2 A2


00                            A2(默认)


00 A200


A2 00                           


00 00 00 A2(默认)


00 00 00                            A2


00 00 A2 00增补平面   U+24B62  0000 0010
0100 1011
0110                            0010  UTF-8                           




UTF-16


UTF-16BE

UTF-16LE

UTF-32



UTF-32BE

UTF-32LE 1111 0000 1010 0100
1010 1101                            1010 0010



1101 1000 0101 0010
1101                            1111 0110 0010



0000 0000 0000 0010
0100                            1011 0110 0010 F0 A4 AD A2                           




D8 52 DF 62(默认)

D8 52 DF                            62


52 D8 62 DF


00 02 4B                            62(默认)


00 02 4B 62


00 02 4B                            62
表 3 对三种编码方式从编码字节数,BOM 以及优缺点方面进行了对比。
表 3.                    三种编码方式的比较编码方式编码字节数                                BOM优点缺点UTF-8
不定长编码方式,单字节(ASCII 字符)或多字节(非 ASCII 字符);最小                            Code Unit 是 8 位 无字节序:如果一个文本的开头有字节流 EF BB BF,表示是 UTF-8 编码                            较为理想的                                Unicode 编码方式:与                            ASCII 编码完全兼容;无字节序;自同步和纠错能力强,适合网络传输和通信;扩展性好  变长编码方式不利于程序内部处理, UTF-16双字节(BMP                                字符)或者四字节(增补平面字符);最小 Code Unit 是 16 位                            有字节序:UTF-16LE(小端序)以 FF FE 代表,UTF-16BE(大端序)以                            FE FF 代表  最早的 Unicode                            编码方式,已被应用于大量环境中;适合内存中 Unicode 处理;很多编程语言的 API 中作为 string                            类型的编码方式  无法兼容于 ASCII                            编码;增补平面码点编码使用代理对,编码复杂;扩展性差 UTF-32 固定四字节;最小 Code                            Unit 是 16 位 有字节序:UTF-16LE(小端序)以 FF FE                            代表,UTF-16BE(大端序)以 FE FF 代表  固定字节编码读取简单,编译程序内部处理;Unicode 码点和                            Code Unit 一一对应关系                             所有字符以固定四字节编码,浪费存储空间和带宽;与 ASCII 编码不兼容;扩展性差;实际使用少
返回列表