我有一个名为的 Python 脚本scratch_1.py
,为了回答这个问题,可以将其简化为:
s = "∞"
print(s)
如果我在 Windows 控制台中运行该脚本,我会得到预期的输出:
python scratch_1.py
输出:
∞
但是,如果我尝试将 Windows 控制台的输出重定向到文件,则会引发错误:
python scratch_1.py > temp.txt
输出:
Traceback (most recent call last):
File "C:\Users\Wok\AppData\Roaming\JetBrains\PyCharmCE2022.2\scratches\scratch_1.py", line 3, in <module>
print(s)
File "C:\Users\Wok\AppData\Local\Programs\Python\Python311\Lib\encodings\cp1252.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_table)[0]
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
UnicodeEncodeError: 'charmap' codec can't encode character '\u221e' in position 0: character maps to <undefined>
我想出了解决方法。
然而,我更希望有一个解决方案不需要修改 Python 脚本。
我曾想过使用chcp 65001
。
这导致了下面显示的观察结果,但这并没有修复 Python 错误。
chcp
echo ∞
输出:
850
∞
chcp
echo ∞ > temp.txt
type temp.txt
输出:
850
8
chcp 65001
echo ∞ > temp.txt
type temp.txt
输出:
65001
∞
chcp 65001
python scratch_1.py > temp.txt
输出:
65001
UnicodeEncodeError (same as before)
有什么想法或建议吗?