解决 UnicodeDecodeError: 'utf8' codec can't decode byte 0x9c

之前分享的一篇“ 读取配置表,循环输入对应数据”[ 读取配置表,循环输入对应数据 ](http://support.i-search.com.cn/article/1554966439384) 的贴子,在后续运行中出现了这样的报错信息:UnicodeDecodeError: ‘utf8’ codec can’t decode byte 0x9c

初步推测这是文件中包含了 utf8 也无法解码的偏僻字符,导致报此错误。

解决方法

1. 使用 unicode 解码:

with open(file, 'r') as f:
        for str in f:
            # unicode 是python2里的,我在python3测试会有问题
            str = unicode(str, errors = 'replace')
            # or
            str = unicode(str, errors = 'ignore')

该方法返回一个不包含那些无法解析的字符的字符串。 
2. 使用 codecs 读取文件:

import codecs

with codecs.open(file, 'r', encoding='utf-8', 
        errors='ignore') as f:
    for str in f:
        # process

关于 utf8 无法解析的字符串的问题,Python 还有官方文档说明,有兴趣的同学可以参考一下。