首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在Git Bash/WinPTY下获得使用Python3的REPL/箭头键功能和Unicode字符

如何在Git Bash/WinPTY下获得使用Python3的REPL/箭头键功能和Unicode字符
EN

Stack Overflow用户
提问于 2017-12-04 16:17:36
回答 1查看 255关注 0票数 2

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

已设置了地区:

代码语言:javascript
复制
$ 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变量

代码语言:javascript
复制
$ env | grep "PYTHON"
PYTHONIOENCODING=utf-8

现在是“测试”:

代码语言:javascript
复制
$ /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执行

代码语言:javascript
复制
$ 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编码,但两者都不能。还有其他人有这个问题吗?还是我错过了一些能让这一切都奏效的东西?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-06 00:25:56

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47637584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档