解决python文件读取时的UnicodeDecodeError: 'ascii' codec can't decode byte 0xd4 in position 904: ordinal not in range(128)问题

最近在处理一个csv格式的数据时,出现了UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xd4 in
position 904: ordinal not in range(128)
的错误告知。

查了一下,发现只要指定encoding=’iso-8859-1’即可解决此问题了。

代码演示:

1
2
3
.....
with open(filename, encoding='iso-8859-1') as f:
......

简单说明一下为何如此指定编码格式:

ISO 8859-1,正式编号为ISO/IEC 8859-1:1998,又称Latin-1或“西欧语言”,是国际标准化组织内ISO/IEC 8859的第一个8位字符集。它以ASCII为基础,在空置的0xA0-0xFF的范围内,即解决0xA0-0xFF的范围内的编码错误问题,如上我们的0xd4在此范围之内。

详细可见维基百科地址:https://zh.wikipedia.org/wiki/ISO/IEC_8859-1

---------------本文终---------------

文章作者:刘俊

最后更新:2019年01月02日 - 14:01

许可协议: 转载请保留原文链接及作者。