字符编码

2021/04/26 计算机网络

字符编码相关记录

1、简介

字符编码(英语:Character encoding)也称字集码,​字符串类型、文本文件的内容都是由字符组成的,但凡涉及到字符的存取,都需要考虑字符编码的问题。人类在与计算机交互时,用的都是人类能读懂的字符,如中文字符、英文字符、日文字符等 而计算机只能识别二进制数,要把人类认识的字翻译成机器认识的字,就需要字符编码了。

2、发展历史

  1. 在计算机起源的时候,美国为了让计算机识别英文字符,创造了ASCII
  2. 随着计算机在全球普及,很多国家都把自己的字符引入计算机,比如中国的GB2312,后面因为不够用,又诞生了GBK标准
  3. 各个国家为了解决不同字符编码带来的乱码问题,对全世界所有的符号进行统一,诞生了Unicode
  4. 后面又对Unicode编码进行压缩和优化,诞生了UTF-8utf-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无论输入任何字符都不会乱码,乱码主要分为两种:

  1. 读的时候乱码:在由硬盘读取到内存的时候,必须采用写入时同样的编码格式
  2. 存的时候乱码:由内存写入硬盘时,必须将编码设置为支持所输入的字符的编码格式

Search

    Table of Contents