python3中的编码、字符串编码等

首先python3中字符串的默认编码刚完事就是Unicode,所以可以直接对python3中的字符串使用内建方法.encode()来定义字符串的编码格式。

>>> a="nihao"
>>> ab=bytes(a,encoding='gbk')  #将Unicode格式的字符串转换成gbk编码之后的字节,英文不变
>>> ab
b'nihao'
>>> c="你好"
>>> cd=bytes(c,encoding='gbk')#Unicode下的字符,一个汉字对应gbk编码的两个字节
>>> cd
b'\xc4\xe3\xba\xc3'
>>> str(cd,encoding='gbk')#将字节转化成字符串
'你好'
>>> str(b'\xc4\xe3',encoding='gbk')
'你'
>>> len(c)
2
>>> cd
b'\xc4\xe3\xba\xc3'
>>> ce=c.encode('gbk')#将字符串c采用gbk编码得到它的字节串
>>> ce
b'\xc4\xe3\xba\xc3'
>>> ce.decode('gbk')#讲字节串解码成Unicode,这里的参数是为了说明当前字节串是通过何种编码方式得到的
'你好'
>>>

还有一个小技巧,查看当前字节串(字符串编码过后的字节串)采用的编码格式的话,需要导入chardet模块

import chardet
>>> ss=bytes("你好",encoding="utf-8")
>>> chardet.detect(ss)
{'encoding': 'utf-8', 'confidence': 0.7525, 'language': ''}
>>> ss
b'\xe4\xbd\xa0\xe5\xa5\xbd'
>>> chardet.detect(b'\xe4\xbd')
{'encoding': 'ISO-8859-1', 'confidence': 0.73, 'language': ''}
>>> chardet.detect(b'\xe4\xbd\xe5')
{'encoding': 'ISO-8859-1', 'confidence': 0.73, 'language': ''}
>>> chardet.detect(b'\xe4\xbd\xa0')
{'encoding': 'ISO-8859-1', 'confidence': 0.73, 'language': ''}
>>> ss
b'\xe4\xbd\xa0\xe5\xa5\xbd'
>>> chardet.detect(b'\xe4\xbd\xa0')
{'encoding': 'ISO-8859-1', 'confidence': 0.73, 'language': ''}
>>>

猜你喜欢

转载自blog.csdn.net/Muyan_Donny/article/details/81252604