python 字符编码练习

Posted 罗兵の水库

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python 字符编码练习相关的知识,希望对你有一定的参考价值。

通过下面的练习,加深对python字符编码的认识

# \x00 - \xff 256个字符
>>> a = range(256)
>>> b = bytes(a) # 不用参数encoding >>> b b‘\x00\x01\x02 ... \xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff‘ >>> b.decode(utf-8) # 报错 Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0x80 in position 128: invalid start byte >>> b.decode(unicode-escape) #正常 ‘\x00\x01\x02 ... \xf6÷\xf8ùú\xfbü\xfd\xfe\xff‘
# 题外:上面几句等价于下面一句
>>> ‘‘.join(list(map(chr, range(256))))
‘\x00\x01\x02 ... \xf6÷\xf8ùú\xfbü\xfd\xfe\xff‘

>>> a = abc >>> a ‘abc‘ >>> b = bytes(a, encoding=utf-8) # 方式一:把 ‘abc‘ 变为字节数据 >>> b b‘abc‘ >>> c = a.encode(utf-8) # 方式二:把 ‘abc‘ 变为字节数据,与一等价 >>> c b‘abc‘ # \x00 - \xff 256个字符,bytearray方式 >>> a = range(256) >>> b = bytearray(a) >>> b bytearray(b‘\x00\x01\x02 ... \xf6\xf7\xf8\xf9\xfa\xfb\xfc\xfd\xfe\xff‘) >>> b.decode(unicode-escape) ‘\x00\x01\x02 ... \xf6÷\xf8ùú\xfbü\xfd\xfe\xff‘ # 中文编码 >>> a = >>> a ‘中‘ >>> b = a.encode(gbk) >>> b b‘\xd6\xd0‘ >>> c = a.encode(utf-8) >>> c b‘\xe4\xb8\xad‘ >>> d = a.encode(unicode-escape) >>> d b‘\\u4e2d‘ >>> e = a.encode(cp936) >>> e b‘\xd6\xd0‘ # 中文解码 >>> a.decode(utf-8) Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: ‘str‘ object has no attribute ‘decode‘ >>> b.decode() Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xd6 in position 0: invalid continuation byte >>> b.decode(utf-8) Traceback (most recent call last): File "<stdin>", line 1, in <module> UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xd6 in position 0: invalid continuation byte >>> b.decode(gbk) ‘中‘ >>> b.decode(cp936) # gbk编码的可以cp936解码,反之不行。因为gbk是cp936的一个子集 ‘中‘

 

以上是关于python 字符编码练习的主要内容,如果未能解决你的问题,请参考以下文章

python 字符编码转换

python编码格式

python变量,字符编码与运算

字符编码转换

字符串操作练习:星座凯撒密码99乘法表词频统计预处

python中的字符串编码问题——3.各操作系统下的不同编码方式