Windows 7,限制用户帐户正在运行
Git git version 2.14.1.windows.1
MINGW / MSYS MINGW64_NT-6.1 REDACTED 2.8.2(0.313/5/3) 2017-07-12 15:35 x86_64 Msys
Python Python 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编码env变量已设置
$ 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编码,但不能同时使用两者。其他人都有这个问题,或者我在这里错过了一些可以使这一切工作的东西?
注意:我受限于此环境;我无法随意安装/更新/修改应用程序。
答案 0 :(得分:1)
在WinPTY案例中,控制台仍在使用cp437(默认的美国OEM Windows编码),但您强制Python通过PYTHONIOENCODING输出UTF-8。切换到Python 3.6,因为该版本现在使用Windows Unicode控制台API输出Unicode,不应该有编码问题。