python3出现转码问题的总结

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3出现转码问题的总结相关的知识,希望对你有一定的参考价值。

对于此(类)问题:

(1)出现UnicodeEncodeError –> 说明是Unicode编码时候的问题;

(2) ‘gbk’ codec can’t encode character –> 说明是将Unicode字符编码为GBK时候出现的问题;

此时,往往最大的可能就是,本身Unicode类型的字符中,包含了一些无法转换为GBK编码的一些字符。

解决办法是:

  • 方案1:

在对unicode字符编码时,添加ignore参数,忽略无法无法编码的字符,这样就可以正常编码为GBK了。

对应代码为:

gbkTypeStr = unicodeTypeStr.encode(“GBK“, ‘ignore’);
  • 方案2:

或者,将其转换为GBK编码的超集GB18030 (即,GBK是GB18030的子集):

gb18030TypeStr = unicodeTypeStr.encode(“GB18030“);

对应的得到的字符是GB18030的编码。

【题外话】

对于上述中,将原先的utf-8的字符转换为Unicode的时候,其实更加安全的做法,也可以将:

titleUni = titlehtml.decode(“UTF-8”);

替换为:

titleUni = titleHtml.decode(“UTF-8”, ‘ignore’);

这样可以实现,即使对于那些,相对来说是无关紧要的一些特殊字符,也可以成功编码,避免编码出错,提高程序的健壮性。

以上是关于python3出现转码问题的总结的主要内容,如果未能解决你的问题,请参考以下文章

python3 字符编码与转码 NLP第一条

python3 requests爬取gbk时候遇到编码的坑

python学习:字符编码与转码

python2 将TXT文本转码为utf-8

url编码问题在python中怎么解决

1.Python3关于文件的操作