Python 文字转码问题的解决:ignore, replace

用Python处理中文,肯定是每个人都曾经烦过的问题。

生产环境是Python2,任务是把unicode字符串如 u’\uxxxx\uxxxx\uxxxx’ 转换为gbk保存,用的是str.encode(‘gbk’)方法。

然而,经常会出现类似这样的异常:

UnicodeEncodeError: ‘gbk’ codec can’t encode character u’\uxxxx’ in position 0: illegal multibyte sequence

原因是遇到了某些非法字符,而蛋疼的是,一大串字符串里面只要遇到一个非法字符,就会报错,这可不是我们希望的。

解决办法:从帮助文档可知,函数原型是 encode([encoding], [errors=‘strict‘]),decode函数也是一样,默认用的是严格的策略,一遇到问题就抛出异常,我们可以把它改为’ignore’或者’replace’等值,就可以避免异常了。


发表评论