python 中utf8,u_str的转换

先来介绍下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'
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值