python123汉字的unicode编码值

如题所述

第1个回答  2022-04-12
python的默认编码是ascii,可以通过sys.setdefaultencoding('utf-8')函数设置python的默认编码。

python中可以通过encode和decode的方式改变数据的编码,比如:

>>> u'汉字'

u'\u6c49\u5b57'

>>> u'汉字'.encode('utf-8')

'\xe6\xb1\x89\xe5\xad\x97'

>>> u'汉字'.encode('utf-8').decode('utf-8')

u'\u6c49\u5b57'

我们可以通过这两个函数设置编码。

那么,python中的str是什么类型?

>>> import binascii

>>> '汉字'

'\xba\xba\xd7\xd6'

>>> type('汉字')

>>> print binascii.b2a_hex('汉字')

babad7d6

>>> print binascii.b2a_hex(u'汉字')

Traceback (most recent call last):

File "", line 1, in

UnicodeEncodeError: 'ascii' codec can't encode characters in

position 0-1: ordinal not in range(128)

>>> print binascii.b2a_hex(u'汉字'.encode('utf-8'))

e6b189e5ad97

>>> print binascii.b2a_hex(u'汉字'.encode('gbk'))

babad7d6

binascii是将数据的二进制转换成ascii,上面的解释是:‘汉字'的类型是str,二进制是babad7d6,u‘汉字'是无法转换成ascii,这样就报出了开头的第一个错误。解决办法就是把它.encode(‘utf-8')成str类型。因为我命令行是windows默认的GBK编码,所有u'汉字'.encode(‘gbk')的时候,输出结果和‘汉字'结果一样。
相似回答