字符编码

发布时间 2023-12-04 18:24:54作者: 苏苏!!

字符编码

(一)什么是字符编码

  • 人与计算机交互时,用的都是人能够读懂的字符,而计算机只能识别二进制数。
  • 翻译的过程必须参照一个特定的标准
    • 该标准称之为字符编码表
    • 该表上存放的就是字符与数字一一对应的关系。
  • 字符编码中的编码就是翻译或者转换的意思,就是将人能理解的字符翻译成计算机能够识别的数字。

(二)字符编码的发展

(1)第一阶段:一家独大(ASCII)

  • ASCII表的诞生

    • 现代计算机起源于美国,所以最先考虑仅仅是让计算机识别英文字符,于是诞生了ASCII表
  • ASCII表的特点

    • 只有英文字符与数字的一一对应关系
    • 一个英文字符对应1Bytes,1Bytes=8bit,8bit最多包含256个数字,可以对应256个字符,足够表示所有英文字符
  • 字母对应ASCII表

    • A-Z:65-90
    • a-z:97-122
    • 0-9:48-57
    • 小写字母对应的数字一定大于大写字母。

(2)第二阶段:诸侯割据(ASCII/GBK/Shift_JIS)

1.各国编码表:

  • 中国的GBK

    • 中国人用的计算机里使用字符编码标准是GBK
  • 为了能让计算机识别中文和英文,中国人定制了GBK。

    • BGK的特点

      • 只有中文字符、英文字符与数字的一一对应关系。
      • 一个英文字符对应1个Bytes,一个中文对应2个Bytes。
  • 补充:

    • 1Bytes=8bit,8bit最多包含256个数字,可以对应256个字符,足够表示所有英文字符。
    • 2Bytes=16bit,16bit最多包含65536个数字,可以对应65536个字符,足够表示所有中文字符。
  • 美国的ASCII

    • 美国人用的计算机里使用字符编码标准是ASCII表。
  • 现代计算机起源于美国,所以最先考虑仅仅是让计算机识别英文字符,于是诞生了ASCII表

  • 日本的Shift_JIS

    • 日本人用的计算机里使用字符编码标准是Shift_JIS
  • 为了让计算机能够识别日文字符、英文字符与数字的一一对应关系,日本定制了 Shift_JIS表.

  • 韩国的Euc-kr

    • 韩国人用的计算机里使用字符编码标准是Euc-kr。
  • 为了让计算机能够识别韩文字符、英文字符与数字的一一对应关系,韩国定制了 Euc-kr 表。

2.多种编码表共存的缺点:

  • 现阶段的计算机采用的字符编码都无法识别其他国家的字符,造成了不可识别、乱步的情况。
  • 需要一个兼容万国字符的编码表。

(3)第三阶段:一统天下(unicode)

  • unicode于1990年开始研发,1994年正式公布。

1.unicode的特点:

  • 所有语言中的字符和数字都是一一对应的关系,即兼容了万国字符。
  • 与传统的字符编码的二进制数都有对应关系,详解如下:
    • 很多地方或老的系统、应用软件仍会采用各种各样传统的编码,这是历史遗留问题。
    • 此处需要强调:软件是存放于硬盘的,而运行软件是要将软件加载到内存的,面对硬盘中存放的各种传统编码的软件,想让我们的计算机能够将它们全都正常运行而不出现乱码,内存中必须有一种兼容万国的编码,并且该编码需要与其他编码有相对应的映射/转换关系,这就是unicode的第二大特点产生的缘由。

2.字符的存储

  • 文本编辑器输入任何字符都是最新存在于内存中,是unicode编码的。
    • 存放于硬盘中,则可以转换成任意其他编码,只要该编码可以支持相应的字符。
  • 英文字符可以被ASCII识别
    • 英文字符--->unciode格式的数字--->ASCII格式的数字
  • 中文字符、英文字符可以被GBK识别
    • 中文字符、英文字符--->unicode格式的数字--->gbk格式的数字
  • 日文字符、英文字符可以被shift-JIS识别
    • 日文字符、英文字符--->unicode格式的数字--->shift-JIS格式的数字