unicode 与 utf记录

字符串编码中会因为不同的编码而导致乱码问题,所以,出现了Unicode编码,Unicode编码是把所有语言的字符全部收集起来,
称为统一字符集(ucs),并把这些字符进行一个统一的编码,用一个整数码点来表示,范围是0-0x10ffff,所以大量的字符无法如
ASCII码一样只用一个字节就可存储。所以就涉及到如何更好的存储Unicode编码的问题。
很明显要表示一个Unicode码点需要三个字节,所以,每个字符使用三个字节来表示就可以很容易的显示各种语言,但是,现实
中我们很多文本都是英文表示,而英文字符是ASCII编码,在Unicode的编码中位于最低位,只需要一个字节就能搞定,所以使用三
个字节来存储英文字母就会造成极大的浪费,而且与之前的很多ASCII表示的东西不兼容。于是Unicode制定了多种方式来存储码点,
这些方式就是uniform transformation format(utf)。现在用的比较多的是utf-8,utf-16,utf-32等。utf-8在互联网上最流行。
原因:
1.它采用字节为编码单元,不会有字节序(endianness)的问题。
2.每个 ASCII 字符只需一个字节去储存。
3.如果程序原来是以字节方式储存字符,理论上不需要特别改动就能处理 UTF-8 的数据。

Unicode表示中,表示为\u****,能表示数的范围是0-0xffff,但是Unicode可以表示0x10ffff。这就涉及到会有更多的字节来表示剩
余的编码,utf-8中规定了第一个字符的前缀\uD800 至 \uDBFF,那么后面跟的一个字符也是表示该Unicode,最终真的Unicode值要

通过两部分来进行计算,当然计算规则可以在网上查到,这里就不详说了。

在python中可以使用ord函数来得到一个字符的unicode码点值,也可以通过chr函数得到一个码点值对应的字符。

print(ord('郭'))  //37101
print(chr(37101)) //郭

本文遵从CC3.0协议转载请注明:转自凌风技术站

本文标题:unicode 与 utf记录

本文链接地址:http://www.iaccepted.net/python/tutorial/139.html

相关文章



发表评论

电子邮件地址不会被公开。 必填项已用*标注