我正在编写一个脚本,需要将字符序列“Qä”打印到终端。我的终端使用 UTF-8 编码。我的文件顶部有
# -*- coding: utf-8 -*-
,我认为这对于 Python 3 实际上不是必需的,但我把它放在那里以防它产生任何影响。在代码中,我有类似的东西
print("...Qä...")
这不会产生 Qä。相反,它产生 Q▒。
然后我尝试了
qa = "Qä".encode('utf-8')
print(f"...{qa}...")
这也不会产生 Qä。它产生'Q\xc3\xa4'。
我也尝试过
qa = u"Qä"
print(f"...{qa}...")
这也会产生 Q▒。
但是,我知道Python 3可以打开包含UTF-8的文件并正确使用内容,所以我创建了一个名为qa.txt的文件,将Qä粘贴到其中,然后使用
with open("qa.txt") as qa_file:
qa = qa_file.read().strip()
print(f"...{qa}...")
这有效。然而,我必须创建这个文件才能打印这个字符串,这太愚蠢了。如何将此文本作为字符串文字放入我的代码中?
这个问题与询问 Python 2.7 的问题不重复,我没有使用 Python 2.7。
在 Windows 上,对于非交互式 Python 运行,Python 将标准流默认为 'cp1252'
的
区域设置编码。您的终端设置为使用 UTF-8,而不是 CP1252。您可以使用 将标准输出流重新配置为 UTF-8
sys.stdout.reconfigure(encoding='utf-8')
或在运行 Python 之前将
环境变量设置为
utf-8
以更改默认的 stdin/stdout/stderr 编码。