Unicode字符以及UTF-8

  • 前提基础知识
    计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111。

1.概念

1.1 Unicode

  • 定义:
    Unicode是一个字符集标准,它定义了每个字符的唯一编号,包括了世界上几乎所有的字符。
  • 示例:
拉丁字母:A(Unicode编码:U+0041)
汉字:中(Unicode编码:U+4E2D)
表情符号:(Unicode编码:U+1F60A)
每个Unicode字符都有一个独一无二的编号,称为“码点”。这个编号通常用“U+”后跟一串十六进制数表示。例如,拉丁字母“A”的Unicode码点是U+0041。通过这种方式,Unicode能够支持超过100,000个不同的字符。
  • 结论:
    拿“汉字:中(Unicode编码:U+4E2D)”举例。
汉字“中”是一个Unicode字符。
而U+4E2D是汉字“中”的Unicode编码(码点)。

1.2 UTF-8

Unicode 是字符集,它定义了一套字符和对应的码点。
UTF-8 是字符编码,是一种针对Unicode的编码方案。它定义了如何将这些字符(码点)转换为字节序列(电脑存储和处理数据的基本单位)。
它使用一到四个字节来表示每个Unicode码点,使得它非常有效率,尤其是对于常用的拉丁字符(如英文),这些字符只需要一个字节就可以表示。

2.二者之间的关系

  • UTF-8和GBK都是Unicode的实现方式,而Unicode是一个字符集标准,它定义了每个字符的唯一编号,包括了世界上几乎所有的字符。

  • UTF-8和GBK的区别在于编码方式不同。UTF-8采用变长编码,可以表示Unicode字符集中的任意字符,而且对于英文字符采用1个字节编码,对于汉字采用3个字节编码。GBK采用双字节编码,只能表示汉字和部分符号,对于英文字符采用1个字节编码。

  • UTF-8和GBK的兼容性不同。UTF-8兼容ASCII编码,因为ASCII编码是UTF-8的子集,而GBK不兼容ASCII编码,因为GBK编码中没有ASCII编码中的字符。

  • Unicode是一种字符集标准,不是编码方式。Unicode定义了每个字符的唯一编号,但是没有规定如何将这些编号转换为计算机可以识别的二进制数据。因此,UTF-8、GBK等编码方式都是Unicode的实现方式。

总的来说,UTF-8是一种通用的编码方式,可以表示Unicode字符集中的任意字符,而且兼容ASCII编码。GBK是一种中文编码方式,只能表示汉字和部分符号,不兼容ASCII编码。Unicode是一个字符集标准,定义了每个字符的唯一编号,但是没有规定如何将这些编号转换为计算机可以识别的二进制数据。

你可能感兴趣的:(python,java,开发语言)