无法确定,但假设您的源文件中显示的内容和显示的内容在传输中没有被变形,您的问题是:
您希望看到 (a-acute, n-tilde, o-acute),但您实际上会看到“错误字符”(不间断空格,即 NBSP、货币符号、分号)。
我没有cxfreeze。我的猜测是 cxfreeze 对您的输出进行双重编码。这是基于在 Windows 7 上使用 Python 3.2.0 运行以下源文件。您会注意到,我对文本字符使用了转义序列,以排除由源编码问题引起的任何噪音。
# coding: ascii ... what you see is what you've got.
# expected output: a-acute(e1) n-tilde(f1) o-acute(f3)
import sys
import unicodedata as ucd
text = '\xe1\xf1\xf3'
print("expected output:")
for c in text:
print(ascii(c), ucd.name(c))
print("seen output[%s]" % text)
sse = sys.stdout.encoding
print(sse)
print("Expected raw bytes output:", text.encode(sse))
whoops = text.encode(sse).decode('latin1')
print("whoops:")
for w in whoops:
print(ascii(w), ucd.name(w))
这是它的输出。
expected output:
'\xe1' LATIN SMALL LETTER A WITH ACUTE
'\xf1' LATIN SMALL LETTER N WITH TILDE
'\xf3' LATIN SMALL LETTER O WITH ACUTE
seen output[áñó]
cp850
Expected raw bytes output: b'\xa0\xa4\xa2'
whoops:
'\xa0' NO-BREAK SPACE
'\xa4' CURRENCY SIGN
'\xa2' CENT SIGN
在“看到的输出”之后的括号中,我看到了预期的 a-acute、n-tilde 和 o-acute。请在使用和不使用 cxfreezing 的情况下运行脚本,并报告(用文字)您看到的内容。如果冻结的“看到的输出”实际上是一个空格,后跟一个货币符号和一个美分符号,您应该向 cxfreeze 维护者报告问题(带有此答案的链接)。