在 Python 3 字符串文字中使用 UTF-8

问题描述 投票:0回答:1

我正在编写一个脚本,需要将字符序列“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。

python unicode utf-8 git-bash python-unicode
1个回答
0
投票

在 Windows 上,对于非交互式 Python 运行,Python 将标准流默认为 'cp1252'

区域设置编码
。您的终端设置为使用 UTF-8,而不是 CP1252。您可以使用 将标准输出流重新配置为 UTF-8 sys.stdout.reconfigure(encoding='utf-8')

或在运行 Python 之前将 

PYTHONIOENCODING

 环境变量设置为 
utf-8 以更改默认的 stdin/stdout/stderr 编码。
    

© www.soinside.com 2019 - 2024. All rights reserved.