其他分享
首页 > 其他分享> > 【锟斤拷】的故事:谈谈汉字编码和常用字符集

【锟斤拷】的故事:谈谈汉字编码和常用字符集

作者:互联网

文章目录


之前N篇都提到了汉字乱码,真是个长久困扰我们的问题。
无论开发语言,磁盘文件,数据库,网络传输都可能出现编码问题。

(一)编码

计算机本无码,它们只认0101的二进制(我们为了方便经常写作格式0xFF的16进制)。
所以要显示任何文字都需要进行编码,即使是英文字母。所以是人类创造了码。
废话尽量简短吧:
PS:内容和图来自百度和其它网站(找到链接的都给了)。

1.1 ASCII码

ASCII= American Standard Code for Information Interchange=美国信息交换标准码

单个字节表示一个字符,最高位为0,其它位的组合表示了各种英文字母与符号,比如:

最多: 0111 1111,7F
HEX:41 42 43 44 2C 31 32 33 34 —— ABCD,1234

在英语中,用128个符号编码便可以表示所有字母和符号,但是用来表示其他语言是不够的。

1.2 ASCII码的扩展

将最高位也使用起来,比如法语中的é的编码为130(二进制10000010)。
这样一来,这些欧洲国家使用的编码体系,可以表示最多256个符号。

最多: 1111 1111,FF

但是不同的国家有不同的字母,因此,哪怕它们都使用256个符号的编码方式,代表的字母却不一样。比如:

字节(130)在法语编码中代表了é,
在希伯来语编码中却代表了字母Gimel (ג),
在俄语编码中又会代表另一个符号。

但是不管怎样,所有这些编码方式中,0–127表示的符号是一样的,不一样的只是128–255的这一段。
PS:为了知道同样的编码到底表示的具体字符,我们必须知道这段文字的字符集

1.3 汉字(包括其它文字)的多字节的编码

由于我们有国家标准的编码(GB)又有国际标准的编码(Unicode),所以中文相对复杂一些。

我们的国标编码(字符集)是这样发展的:
编码前两字节包含关系

1.4 编码实例和测试

举个例子,四个汉字(参考

标签:编码,字节,UTF8,字符集,GBK,乱码,谈谈,汉字编码
来源: https://blog.csdn.net/ddrfan/article/details/122303699