【发布时间】:2021-01-16 09:29:43
【问题描述】:
将以下程序另存为test.py:
def f():
"""àâùç"""
return
print("àâùç")
并在 Windows cmd-window 中以交互模式执行它:
python -i test.py
printed 的文字是正确的,但是当我打电话给 help(f) 时,我得到了炒鸡蛋:
P:\>python -i test.py
àâùç
>>> help(f)
Help on function f in module __main__:
f()
ÓÔ¨þ
将代码页更改为 65001 会显示经典的神秘卡片:
P:\>python -i test.py
àâùç
>>> help(f)
Help on function f in module __main__:
f()
����
有没有(简单的)解决方法?
【问题讨论】:
-
尝试
chcp 1252,因为help()代表ACP代码页(reg query "HKLM\SYSTEM\CurrentControlSet\Control\Nls\CodePage" -v ACP)。 -
似乎是 print() 正常工作并且 help() 编码为 ANSI(美国和西欧 Windows 上为 1252)的错误。 Windows 终端的默认编码是西欧 Windows 上的“OEM ANSI”850,是您看到的错误解码字符
ÓÔ¨þ。chcp 1252确实帮助正确打印。print(f.__doc__)正确显示文档字符串。
标签: windows unicode python-3.7 interactive docstring