编码问题 UnicodeDecodeError
来源:互联网 发布:淘宝聚星台在哪里 编辑:程序博客网 时间:2024/06/05 08:40
编码问题是一件头疼的事情,当我们在处理网络数据流时。
例如: 在解析从文件中读取的字符串, 想要将字符串统一编码为Unicode。经常会读到乱七八糟的字符串(其他国家的字符串编码)
>>> line = 'Y\x02\xd9\xea\x16\xedt\x9a\x9cs\xa0\x9a\xd2\xe0\x94\t\xfd\xff\x17O\xafj\xc3\x04\xfe\x8e\x98\xf1\x9f'>>> type(line)<type 'str'>>>> line.decode("utf8")Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/prod/borey_zhu/borey_zhu/env/lib/python2.7/encodings/utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True)UnicodeDecodeError: 'utf8' codec can't decode byte 0xd9 in position 2: invalid continuation byte
这个时候需要知道字符串的编码, 我们可以通过 chardet 工具来完成, 可以通过 pip 进行安装, 例如:
>>> import chardet>>> chardet.detect(line){'confidence': 0.32383909083254714, 'language': 'Thai', 'encoding': 'TIS-620'}
我们可以获取 该语言为 ‘Thai’(泰文), 编码为 TIS-620
>>> print line.decode("TIS-620")Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/home/prod/borey_zhu/borey_zhu/env/lib/python2.7/encodings/tis_620.py", line 15, in decode return codecs.charmap_decode(input,errors,decoding_table)UnicodeDecodeError: 'charmap' codec can't decode byte 0xa0 in position 10: character maps to <undefined>>>> print line.decode("TIS-620", "ignore")Yู๊ํtsาเ Oฏjร๑
当decode 还是会出错时, 我们可以进行添加对 undefined的character采取ignore策略
codecs.decode(obj[, encoding[, errors]]) Decodes obj using the codec registered for encoding. The default encoding is 'ascii'. Errors may be given to set the desired error handling scheme. The default error handler is 'strict' meaning that decoding errors raise ValueError (or a more codec specific subclass, such as UnicodeDecodeError). Refer to Codec Base Classes for more information on codec error handling.
errors 参数默认是 采用 ‘strict’ 当有错误会抛出异常, 采用 ‘ignore’会对当前 character 进行忽略继续向下执行;
对上述的打印出的使用百度翻译进行验证:
阅读全文
0 0
- 编码问题 UnicodeDecodeError
- Pycharm编码问题导致django UnicodeDecodeError 报错
- python编译错误(1)字符编码问题UnicodeDecodeError: 'ascii' codec
- python 处理movie-review-data遇到的UnicodeDecodeError 编码问题
- 解决UnicodeDecodeError问题
- setuptools " UnicodeDecodeError:"问题探究
- 解决unicodedecodeerror问题
- scrapy安装问题UnicodeDecodeError
- UnicodeDecodeError: 'utf8' codec can't decode byte pytho控制台输入参数编码问题
- 解决python的UnicodeDecodeError问题
- 解决python pip UnicodeDecodeError问题
- UnicodeDecodeError
- python | 读文件编码问题 | UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 34: illegal mu
- python 编码问题 UnicodeDecodeError: ‘utf8’ codec can’t decode byte 0xb4 in position 0: invalid start byt
- pip install中UnicodeDecodeError问题处理方法
- python 安装模块出现问题:UnicodeDecodeError:
- python编码错误:UnicodeDecodeError: 'utf8' codec can't decode
- python 默认编码( UnicodeDecodeError: 'ascii' codec can't decode)
- Webpack的安装和命令行
- windows10上安装mysql(详细步骤)
- Oracle中的存储过程简单例子
- ajax异步请求,生成表格,局部刷新
- list集合删除多个元素
- 编码问题 UnicodeDecodeError
- AVL树(二)之 C++的实现
- SQL connect by递归查询
- MYSQL模糊查询
- Codevs 1069 关押罪犯
- 【通用】正则表达式小记
- ThinkPHP-TPT360 文章分页不随搜索结果变化的问题
- 划分无冲突子集问题
- github 开源android项目