2

Windows 7,运行 Git 的受限用户帐户git version 2.14.1.windows.1

明威/MSYSMINGW64_NT-6.1 REDACTED 2.8.2(0.313/5/3) 2017-07-12 15:35 x86_64 Msys

PythonPython 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600 64 bit (AMD64)] on win32

语言环境已设置:

$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_ALL=

Python IO Encoding 环境变量已设置

$ env | grep "PYTHON"
PYTHONIOENCODING=utf-8

现在进行“测试”:

$ /c/Python34/python.exe -i
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.stdout.encoding
'utf-8'
>>> print('\u2660')
♠
>>>

Unicode 有效,但 REPL 中丢失了箭头键功能。因此,改为使用 WinPTY 执行

$ winpty /c/Python34/python.exe -i
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 24 2015, 22:44:40) [MSC v.1600 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.stdout.encoding
'utf-8'
>>> print('\u2660')
ΓÖá
>>>

现在我可以浏览 REPL 中的历史记录,但 Unicode 很不稳定。

所以看起来我可以使用 REPL 中的箭头键或正确的 unicode 编码,但不能同时使用两者。其他人有这个问题还是我错过了一些可以让这一切正常工作的东西?

注意:我受限于这个环境;我不能随意安装/更新/修改应用程序。

4

1 回答 1

1

在 WinPTY 情况下,控制台仍在使用 cp437(默认的美国 OEM Windows 编码),但您已强制 Python 通过 PYTHONIOENCODING 输出 UTF-8。切换到 Python 3.6,因为该版本现在使用 Windows Unicode 控制台 API 来输出 Unicode,并且不应该有编码问题。

于 2017-12-06T00:25:56.250 回答