"LookupError: unknown encoding: cp65001"及命令行无法输入中文问题(转)
今天在win10下装完python和pip后,发现在python中运行任何指令都会报错——”LookupError: unknown encoding: cp65001”的错误提示,并且鼠标焦点在命令行窗口内时,win10自带输入法无法切换为中文模式。或许装其他输入法会有用,但一来并不想委屈求全,二来料想也不能解决报错问题。于是到处找办法。找来找去就是那一篇文章,真是一个人写,十个人抄,还都不管能不能行。找到两个质量略好的——stackoverflow1和stackoverflow2。总之是代码页(codepage)的问题,在cmd下chcp命令(大概是change codepage?)可查看当前代码页,chcp nnn可改变当前使用的代码页。
常用有936-GBK编码,437-美国英语,还有这个出问题的65001-utf-8编码。
所以解决报错可以每次打开命令行都用chcp 936
来更换当前代码页,也可以在属性和默认值里修改。然而修改后重启cmd查看属性还是65001的代码页。我猜是个bug吧。那两个帖子描述的解决方案不够优雅,所以几乎是放弃了,重装的心都有了。然而,然而,我想到管理员命令行是正常的,于是又有了希望。打开注册表,定位到”HKEY_CURRENT_USER\Console”,对比正常与非正常的键值对,发现只多了一个codepage键,于是直接修改CodePage键的值为3a8(936的十六进制值),然后重启命令行,啊,只如初见。
C:\Users\haha>chcp /?
显示或设置活动代码页编号。
CHCP [nnn]
nnn 指定代码页编号。
不带参数键入 CHCP 以显示活动代码页编号。
C:\Users\haha>chcp /? 显示或设置活动代码页编号。 CHCP [nnn] nnn 指定代码页编号。 不带参数键入 CHCP 以显示活动代码页编号。
欢心得意之际发现命令行从前往后写时,如果后面有字就会覆盖掉,这个情况word也有,但一直忍着。查了一下发现是插入模式下不会有这个问题,改写模式会有,于是在属性里勾选插入模式。啊,满意。