Python-解决字符串编码UnicodeEncodeError错误
Posted 南方的墙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python-解决字符串编码UnicodeEncodeError错误相关的知识,希望对你有一定的参考价值。
data_results="123456789\\u93b4\\u612c\\u59db \\u2022" #将字符串转换为字节序列:使用encode方法将字符串转换为字节序列,并指定编码格式为utf-8 print(data_results.encode(\'utf-8\')) #使用encode方法将字符串转换为字节序列,并指定编码格式为gbk,使用ignore参数忽略无法处理的字符 print(data_results.encode(\'gbk\', \'ignore\')) #将字节序列转换为字符串:使用decode方法将字节序列转换为字符串,并指定编码格式为utf-8 print(data_results.encode(\'utf-8\').decode(\'utf-8\')) #在输出时指定编码格式为gbk:如果仍然出现UnicodeEncodeError错误,可以将输出的字符串转换为gbk编码格式,并忽略无法处理的字符 print(data_results.encode(\'utf-8\').decode(\'utf-8\').encode(\'gbk\', \'ignore\').decode(\'gbk\'))
读《Python3 是如何解决棘手的字符编码问题的》的笔记
对于Python的编码值得注意的是不同的版本编码方式是不同的。Python3默认的是utf-8而Python2则是ASCll,因此对不同的版本对于UnicodeEncodeError和UnicodeDecodeError的处理也是不一样的!因此对于decode()和encode()的理解和使用也是不一样的!但是两个函数的使用原理是一样的!decode()就是将字节解码成字符,encode()则是相反!值得注意的是字节方便存储和网络传输,而字符用于显示。
对于Python3的编码总结:文本字符全部用 str 类型表示,str 能表示 Unicode 字符集中所有字符,而二进制字节数据用一种全新的数据类型,用 bytes 来表示。在字符引号前面就可以表示这是字节表示的对象。但是这里的局限性就是不嫩能够表示中文。
一图明了:
该python2上场的时候了:
Python2默认的是ASCLL,str表示的字节而Unicode表示的是字符。我们要把 unicode 符号保存到文件或者传输到网络就需要经过编码处理转换成 str 类型,于是 python 提供了 encode 方法,从 unicode 转换到 str。两者转换的关系如下:
注意的问题
文件的读写:
write:判断将要写入的是什么类型,如果是字节的话就直接写入,如果是字符的话那么它会先调用 encode 方法把 unicode 字符串转换成二进制形式的 str 类型,才保存到文件,而 encode 方法会使用 python 默认的 ascii 码来编码。
以上是关于Python-解决字符串编码UnicodeEncodeError错误的主要内容,如果未能解决你的问题,请参考以下文章
Python-解决字符串编码UnicodeEncodeError错误