繁体   English   中英

exec()无法使用Unicode字符

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM