字符编码相关记录
1、简介
字符编码(英语:Character encoding)也称字集码,字符串类型、文本文件的内容都是由字符组成的,但凡涉及到字符的存取,都需要考虑字符编码的问题。人类在与计算机交互时,用的都是人类能读懂的字符,如中文字符、英文字符、日文字符等 而计算机只能识别二进制数,要把人类认识的字翻译成机器认识的字,就需要字符编码了。
2、发展历史
- 在计算机起源的时候,美国为了让计算机识别英文字符,创造了
ASCII
表 - 随着计算机在全球普及,很多国家都把自己的字符引入计算机,比如中国的
GB2312
,后面因为不够用,又诞生了GBK
标准 - 各个国家为了解决不同字符编码带来的乱码问题,对全世界所有的符号进行统一,诞生了
Unicode
- 后面又对
Unicode
编码进行压缩和优化,诞生了UTF-8
,utf-8
对所有的字符和符号分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存
3、ASCII
ASCII码于1961年提出,用于在不同计算机硬件和软件系统中实现数据传输标准化,在大多数的小型机和全部的个人计算机都使用此码。
ASCII码占一个字节,只能包含128个符号.不能表示汉字
由于标准 ASCII 字符集字符数目有限,在实际应用中往往无法满足要求。为此,国际标准化组织又制定了 ISO2022 标准,它规定了在保持与 ISO646 兼容的前提下将 ASCII 字符集扩充为 8 位代码的统一方法。 ISO 陆续制定了一批适用于不同地区的扩充 ASCII 字符集,每种扩充 ASCII 字符集分别可以扩充 128 个字符,这些扩充字符的编码均为高位为 1 的 8 位代码(即十进制数 128~255 ),称为扩展 ASCII 码。
4、GBK
GBK 是一个汉字编码标准
GBK 向下与 GB 2312 编码兼容,向上支持 ISO 10646.1 国际标准,是前者向后者过渡过程中的一个承上启下的标准。
- ISO 10646 是国际标准化组织 ISO 公布的一个编码标准,它与 Unicode 组织的 Unicode 编码完全兼容。
5、Unicode
统一码,也叫万国码、单一码(Unicode)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。
Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式发布1.0版本,2020年发布13.0版本。
6、UTF-8
UTF-8是针对Unicode的一种可变长度字符编码。
它可以用来表示Unicode标准中的任何字符,而且其编码中的第一个字节仍与ASCII相容,使得原来处理ASCII字符的软件无须或只进行少部分修改后,便可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或传送文字的应用中,优先采用的编码。
7、编码与解码
系统读取一个文件,会先从硬盘里读取文件的文字,一般存的文件的编码都为unicode
,系统读取硬盘文字,然后进行编码然后存到内存里,转换成二进制然后交给硬件使用
- 编码:由字符转换成内存中的Unicode,以及由Unicode转换成其他编码的过程,称为编码
encode
- 解码:由内存中的unicode转成字符,以及由其他编码转换成Unicode的过程,都称为解码
decode
8、字符编码的应用
在计算机里面,任何地方都离不开字符,也离不开字符编码,正确的配置使用字符编码可以防止不乱码
内存中固定使用unicode
无论输入任何字符都不会乱码,乱码主要分为两种:
- 读的时候乱码:在由硬盘读取到内存的时候,必须采用写入时同样的编码格式
- 存的时候乱码:由内存写入硬盘时,必须将编码设置为支持所输入的字符的编码格式