关于字符编码

2024-06-25 15:10:51 浏览数 (2)

##关于字符编码

内容涉及:

  1. UTF-8编码
  2. UTF-16编码

你好

UTF8编码:E4 BD A0 E5 A5 BD

计算UTF-16编码得到:

UTF16编码: 4F 60

https://home.unicode.org/

Unicode,统一码、万国码、单一码,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。早期的Unicode字符集(Unicode Character Set)使用2字节编码,即UCS-2。后来又出现了4字节编码,即UCS-4

UCS在计算机中的存储格式叫做UTF(Unicode Transformation Format)

UCS-2最直接的存储格式就是UTF-16了。UTF-16是完全对应于UCS-2的,即把UCS-2规定的字符直接保存下来。而根据字符序,又分为UTF-16LE (Little Endian)和UTF-16BE (Big Endian)。那如何判断某个文件使用的是UTF-16BE还是UTF-16LE呢?可以在文件头部添加BOM(Byte Order Mark)。由于UCS-2没有定义FFFE, 因此规定只要出现FFFE就是UTF-16LE,出现FEFF就是UTF-16BE

UTF-32就简单了,它用四个字节表示字符,这样就可以完全表示UCS-4,而无需像UTF-16那样使用复杂的算法。 与UTF-16类似,UTF-32也包括UTF-32、UTF-32LE、UTF-32BE三种编码,UTF-32使用的BOM就是FFFE0000(UTF-32LE)和0000FEFF(UTF-32BE)

实际计算机中存储的字符,多数在ASCII的范围内,不管使用UTF-16还是UTF-32都会造成很大的浪费

因此,又提出了用1~4个字节来表示的UTF-8,方式如下

可见,ASCII字符(0000-007F)只使用一个字节,避免了空间的浪费。而且UTF-8不再需要BOM字节了。另外,从表中可以看出,从首字节的取值范围就可以知道编码的字节数,这样大大简化了算法

话说,制定标准的这伙儿人呀,智商实在是高

待补充UTF-32编码


纸上得来终觉浅, 绝知此事要躬行。

0 人点赞