Python 如何修复此cp950“;“非法多字节序列”;读取文本文件时是否出现UnicodeDecodeError?
我的老师教我们如何使用“exec”,但我犯了一个错误:Python 如何修复此cp950“;“非法多字节序列”;读取文本文件时是否出现UnicodeDecodeError?,python,python-3.x,Python,Python 3.x,我的老师教我们如何使用“exec”,但我犯了一个错误: UnicodeDecodeError: 'cp950' codec can't decode byte 0xe6 in position 1814: illegal multibyte sequence 我使用: exec(open("somefile.py").read()) 如何解决此问题?鉴于这可能是Python 3源代码,可能的编码是UTF-8(这是Python 3源代码的标准编码) 如果是这种情况,将open(“somefil
UnicodeDecodeError: 'cp950' codec can't decode byte 0xe6 in position 1814: illegal multibyte sequence
我使用:
exec(open("somefile.py").read())
如何解决此问题?鉴于这可能是Python 3源代码,可能的编码是UTF-8(这是Python 3源代码的标准编码) 如果是这种情况,将
open(“somefile.py”)
更改为open(“somefile.py”,encoding=“utf-8”)
将显式指定编码,覆盖区域设置默认值,这将允许您正确读取它
对于惯用代码,您还需要使用with
语句(以保证文件的确定性关闭),使其:
with open("somefile.py", encoding="utf-8") as f:
exec(f.read())
您尝试过exec(打开(“somefile.py”,“r”).read())吗?这与
exec
无关,与somefile.py
的内容有关。该文件中有什么内容以及如何保存?(顺便说一句:我不知道为什么任何老师都会教学生关于exec
——它远比有用的危险,甚至在这里也不可能是你想要的。)cp950?这是一个有趣的默认编码。somefile.py
的实际编码是什么?@Gustavo:为什么会有帮助r
是默认模式,显然是read()
调用失败,而不是open()
调用失败。