pythonunicode码是什么_python中Unicode编码初探

上一篇文章主要讨论了字符编码的不同方式,这一篇文章着重谈谈对python的编码解码的理解。

python2

在python2中主要有两种类型的字符类型,一个是str,一个是Unicode。平时我们默认操作的字符串类型是str,在字符串前面加一个u就是Unicode类型。

这两个类型有相应的工厂方法:str()和unicode()

890123-20160401224452160-21367047.png

上图的例子中可以看出,unicode方法将传入的string,利用传入的encoding将string转换成unicode对象。注意最后的错误是因为python默认的编码方式是ASCII编码格式。

>>>import sys

>>>sys.getdefaultencoding()

'ascii'

string类型和unicode类型分别拥有str.decode()和unicode.encode()方法。我们实验一下:

>>>a_unicode=u 'Hi \u2119'               #长度为4

>>>to_string=a_unicode.encode('utf-8')

>>>to_string

'Hi \xe2\x84\x99'                    #这里长度为6

>>>type(to_string)

'str'

>>>to_new_unicode=to_string.decode('utf-8')

>>>to_noe_unicode==a_unicode

True #这里python2中两者是相等的,但是python3中不相等。

>>>asc_string=a_unicode.encode()

UnicodeEncodeError:'ascii' not in range(128) #上面讲过python默认编码是ascii,而ascii只能表示128的字符,\u2119超出了ascii的可编码范围,所以错误

>>>asc_unicode=to_string.decode()

UnicodeEncodeError:'ascii' not in range(128) #这里利用ascii解码utf-8编码过的字符,出现同样的错误。

>>>to_string.encode('utf-8')

UnicodeEncodeError:'ascii' not in range(128)

上述代码,最后一个错误尤其要注意,尝试将一个字符串类型编码成utf-8编码格式,在python内部要经过两个步骤:将字符串转换成unicode,接着将转换后的unicodeencode成'utf-8'格式即:to_string.decode(sys.getdefaultencoding).encode('utf-8')。因为默认为ascii编码,不能转换\xe2,所以出现错误。

从上述错误我们要注意两点:

在转换的时候,明确转换的字符串的类型,确认是str还是unicode

明白python内部包含的隐式转换方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值