AoboSir 博客

与15年前的我比,我现在是大人;与15年后的我比,我现在还是个婴儿

Learning Python 015 解决问题:读取文件时,出现乱码或者“UnicodeDecodeError 'Gbk' Codec Can't Decode Byte 0xXX in Position XX: Incomplete Multibyte Sequence” 错误


  • 使用的电脑系统:Windows 10 64位
  • 使用的开发集成环境:PyCharm 2016.1.4
  • 使用的Python的版本:python 3.5.0

出现的错误

读取文件时,出现乱码或者UnicodeDecodeError: 'gbk' codec can't decode byte 0xXX in position XX: incomplete multibyte sequence 错误


出现错误的原因

这两个错误可能会出现一个,两个错误的出现的原因是一样的:当我们使用了一个不正确的编码方式去读取一个不是用这个编码方式编码的文件时,轻者出现乱码,重者出现UnicodeDecodeError错误。


模拟错误发生现场

1
2
3
4
5
6
file = open('newfile.txt', 'w', encoding='utf-8')
file.write('你好,AoboSir.')
file.close()
file = open('newfile.txt', 'r')
print(file.read())
file.close()

运行输出:

1
浣犲ソ锛孉oboSir.

1
2
3
4
5
6
file = open('newfile.txt', 'w', encoding='utf-8')
file.write('你好,AoboSir。')
file.close()
file = open('newfile.txt', 'r')
print(file.read())
file.close()

运行输出:

1
2
3
4
Traceback (most recent call last):
  File "D:/WorkSpace/test_ws/demo/learning_python_15.py", line 6, in <module>
    print(file.read())
UnicodeDecodeError: 'gbk' codec can't decode byte 0x82 in position 35: incomplete multibyte sequence

解决办法

读取文件时,指定正确的编码方式:

1
file = open('newfile.txt', 'r', encoding='utf-8')

现在再运行,就正常了:

1
你好,AoboSir

搞定

Comments