1
4
UTF-16是两个字节宽,让我们称之为字节
为了加快字符串处理速度,库通常以本机顺序存储两个字节的字符(大端或小端)。交换字节太贵了。
现在假设PowerPC上有人将字符串写入文件,库将写入字节
对于UTF-8,这是一个不同的故事,UTF-8使用单顺序并将字符长度编码为第一个字符的第一位模式。UTF-8编码在 Wikipedia 一般来说 设计 为了避免结尾的问题 |
2
2
不同的架构可以对事物进行不同的编码。一个系统可能会将0x12345678写为0x12 0x34 0x56 0x78,另一个系统则可能会将其写为0x78 0x56 0x34 0x12。了解源系统是如何写东西的,这一点很重要。字节是读取或写入的最小单位,因此如果一种格式是逐字节写入的,就没有问题,就像没有系统在读取另一个ASCII文件时遇到问题一样。
UTF-16 BOM,
另一方面,UTF-8被设计为一次读取一个字节。因此,即使在处理多字节字符时,所有系统上的顺序都是相同的。 |
3
1
UTF-16和UTF-32编码不指定字节顺序。在8位字节的流中,代码点U+FEFF可以用UTF-16编码为字节FE,FF(大端)或FF,FE(小端)。流编写器显然无法知道流将在哪里结束(文件、网络套接字、本地程序?)因此,您在开头放一个BOM表,以帮助读者确定编码和字节顺序变量。 UTF-8没有这种模糊性,因为它从一开始就是面向字节的编码。用UTF-8编码这个码点的唯一方法是以这个精确的顺序使用字节EF、BB、BF。(方便的是,序列化的第一个字节中的高位也显示了序列将占用多少字节。) |
donefun · 在PHP中将波兰语字符存储为变量 2 年前 |
AFX · 这是AES密钥的有效字节字符串吗? 6 年前 |
jubimk4 · UTF-8中的PUPPET无效字节序列 6 年前 |
user3286053 · utf-8在列表中搜索单词 6 年前 |