欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python 中utf8,u_str的转换

程序员文章站 2024-03-24 11:55:22
...

先来介绍下utf8的来历
最早英文用的是ASCII码表示大小写字母和符号已经足够了,但是扩展到其他语言,中文,法语这种则不够,所以产生了unicode编码。
用unicode其实就是ASCII码的扩展,增加了几位用以表示不同语言中的不同字符,它是一种符号集,规定了符号的二进制值,却没有规定存储格式
utf-8就是unicode的一种基本实现方式,它是一种变长的存储实现方式,可以避免英文字符占用很多字节,规则如下
1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的 Unicode 码。因此对于英语字母,UTF-8 编码和 ASCII 码是相同的。

2)对于n字节的符号(n > 1),第一个字节的前n位都设为1,第n + 1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的 Unicode 码。

python中的转换

>>> a = u'写代码'
>>> b = '读代码'
>>> a
u'\u5199\u4ee3\u7801'
>>> b
'\xe8\xaf\xbb\xe4\xbb\xa3\xe7\xa0\x81'

先写两个str,上面a是unicode的直接编码的u_str,5199本身就表示’写’这个字
下面b的方式是utf-8的方式
转换只需要

'\xe8\xaf\xbb\xe4\xbb\xa3\xe7\xa0\x81'
>>> a.encode('utf-8')
'\xe5\x86\x99\xe4\xbb\xa3\xe7\xa0\x81'
>>> b.decode('utf-8')
u'\u8bfb\u4ee3\u7801'