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编码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编码,但两者都不能。还有其他人有这个问题吗?还是我错过了一些能让这一切都奏效的东西?
注意:我只限于这个环境;我不能随意安装/更新/修改应用程序。
发布于 2017-12-06 00:25:56
在WinPTY的情况下,控制台仍然使用cp437 (默认的美国OEM Windows编码),但是您已经强制Python通过PYTHONIOENCODING输出UTF-8。切换到Python3.6,因为该版本现在使用Windows控制台API输出Unicode,编码不应该出现问题。
https://stackoverflow.com/questions/47637584
复制相似问题