Unicode是什么编码,与ASCII的关系

Unicode是什么编码,与ASCII的关系Unicode 是什么编码 与 ASCII 的关系 今天在看 Python 的转义字符的时候 在字符串中写 uxxxx 的时候出现错误 SyntaxError UnicodeError 于是搜了一下 Unicode ASCII 码 就是用 8 位二进制来编码英文字母和其他字符 在美国 7 位就够了 最高一位是 0

大家好,我是讯享网,很高兴认识大家。

Unicode是什么编码,与ASCII的关系

今天在看Python的转义字符的时候,在字符串中写\uxxxx的时候出现错误:SyntaxError:UnicodeError,于是搜了一下Unicode。

ASCII码

  • 就是用8位二进制来编码英文字母和其他字符
  • 在美国,7位就够了,最高一位是0,共128个字符。
  • 在其他国家是不够的,他们的文字和英文有出入,如法语在字母上有注音符号 é ,各个国家就决定把字节中最前面未使用的那一个位拿来使用,原来的128种状态就变成了256种状态,比如é就被编码成130。
  • 为了保持与ASCII码的兼容性,一般最高位为0时和原来的ASCII码相同,最高位为1的时候,各个国家自己给后面的位(1xxx xxxx)赋予他们国家的字符意义。
    出现问题
    不同国家对新增的128个数字赋予了不同的含义,比如说130在法语中代表了é,但是在希伯来语中却代表了一个希腊字母。
    所以这就成了不同国家有不同国家的编码方式,所以如果给你一串二进制数,想要解码,就必须知道它的编码方式,不然就会出现我们有时候看到的乱码 。

Unicode码

  • Unicode为世界上所有字符都分配了一个唯一的数字编号
  • 这个编号范围从 0x000000 到 0x10FFFF(十六进制),有110多万,每个字符都有一个唯一的Unicode编号,这个编号一般写成16进制,在前面加上U+。例如:“马”的Unicode是U+9A6C。
  • Unicode是一种规定,Unicode本身只规定了每个字符的数字编号是多少,并没有规定这个编号如何存储。
    一种很容易想到的存储方式,是将U+9A6C直接转换为二进制存放,只需2个字节。UTF-8、UTF-16、UTF-32等,都是 Unicode编码 的一种实现方案。

1、UTF-32
将字符的Unicode编号直接转换成二进制存储。使用4个字节,即32位。


讯享网

  • 由于编号是从 0x000000 到 0x10FFFF(十六进制),其实只需3个字节就够了。
  • 比如:马的Unicode为:U+9A6C,那么需要2个字节存放
  • 由于计算机在存储器中排列字节有大端方式和小端方式, UTF-32BE表示大端存放, UTF-32LE 表示小端存放。这样可以正确解释存储的多个字节。

2、UTF-16

UTF-16使用变长字节表示,使用2个或4个字节。

3、UTF-8
UTF-8使用变长字节表示,使用的字节个数从1到4个不等。

注:本文用于个人学习笔记,感谢参考博客。

小讯
上一篇 2025-03-15 16:53
下一篇 2025-04-05 21:56

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/12829.html