一、编码问题
1.ASCII
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。
ASCII码使用7位二进制数 (0~127) 来表示128个字符,包括控制字符 (如换行、回车制表符等)和可打印字符(如数字、字母、标点符号等)。
扩展ASCII码:为了满足一些特定的需求,有时使用了8位ASCII码,其中包括128-255的扩展字符。这些扩展字符在不同的字符集中可能有所不同。
每个字符对应一个唯一的ASCII码值。其最多只能用 8 位来表示(一个字节),即:2**8 = 256,所以,ASCII码最多只能表示 256 个符号。
2.Unicode
Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多
3.UTF-8
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...
4.gb2313、gbk
当计算机被引入到中国后,相关部门设计了GB系列编码(“GB”为“国标”的汉语拼音首字母缩写,即“国家标准”之意)。
按照GB系列编码方案,在一段文本中,如果一个字节是0~127,那么这个字节的含义与ASCII编码相同,否则,这个字节和下一个字节共同组成汉字(或是GB编码定义的其他字符)。
因此,GB系列编码方案向下完全直接兼容ASCII编码方案。也就是说,如果一段用GB编码方案编码的文本里的所有字符都在ASCII编码方案中有定义(即该文本全部由ASCII字符组成),那么这段GB编码实际上和ASCII编码完全一样。
最早的GB编码方案是GB2312,收录的汉字不足一万个,基本能满足日常使用需求,但不包含一些生僻字,因此后来又在GB2312基础上进行了扩展。
在GB2312基础上扩展的编码方案称之为GBK(K为“扩展”的拼音首字母),后来又在GBK的基础上进一步扩展,称之为GB18030,加入了一些国内少数民族的文字,一些生僻字被编到了4个字节。