[英]exec() not working with unicode characters
我试图从我的python代码中执行.py程序,但是非ASCII字符在打印和处理时表现异常。
module1.py:
test = "áéíóúabcdefgçë"
print(test)
主要代码:
exec(open("module1.py").read(), globals())
我希望它打印áéíóúabcdefgçë
但它打印áéÃóúabcdefgçë
。 我尝试过的所有非ASCII字符都会发生这种情况。
我正在使用Python 3.7和Windows 10。
单独运行module1.py不会产生此错误,但是我想使用exec()或具有大致相同功能的其他东西来运行程序。
我找到了解决此问题的方法。 Python的open
性假设使用UTF-8以外的其他编码。 将主代码更改为以下代码可以解决我的计算机(python 3.7和Windows 10)上的问题:
exec(open("module1.py", encoding="utf-8").read(),globals())
感谢@jjramsey提供其他信息:
根据open()的Python文档 ,“默认编码取决于平台(无论locale.getpreferredencoding()返回什么)。”
对我来说,如果我运行以下检查:
import locale
print(locale.getpreferredencoding())
我得到了cp1252
,它不是UTF-8
,因此,除非我们指定编码,否则open()
会引起我们在此问题中看到的问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.