解决Windows下python2报错"LookupError:unknown encoding:cp65001"

我是使用scoop安装的python2,版本如下:

1
2
$ python2 -V
Python 2.7.18

在执行命令python2 -m ensurepip 时,报了一大串错误,抛出的异常如下:

1
2
3
...
File "c:\users\eavel\appdata\local\temp\tmpg4lsci\pip-19.2.3-py2.py3-none-any.whl\pip\_internal\utils\ui.py", line 53, in _select_progress_class
LookupError: unknown encoding: cp65001

网上查了一下解决方案,基本上就是两种:

  • 设置环境变量PYTHONIOENCODING=UTF-8

    Windows下设置变量$env:PYTHONIOENCODING="UTF-8" ,这个方案对我的情况可行,但是安装包时进度条会乱码,而且这样每次使用python2之前都要确保设置了这个环境变量,略显麻烦。

  • 安装包pip install win-unicode-console

    该方案对我无效…

有没有什么更好的解决方案呢?答案是有的。

这个问题本质上python2无法识别字符编码cp65001,而这个编码正是我们常用的utf-8,python2是可以识别utf-8的,那为什么还报错呢?因为python2的编码字典里没有cp65001的键值,这个文件位于$PYTHONHOME/Lib/encodings/aliases.py ,我们可以手动添加

1
2
3
4
5
6
7
8
9
...
# utf_8 codec
'u8' : 'utf_8',
'utf' : 'utf_8',
'utf8' : 'utf_8',
'utf8_ucs2' : 'utf_8',
'utf8_ucs4' : 'utf_8',
'cp65001' : 'utf_8', # 添加cp65001
...

这样问题就解决了

打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2021-2025 lorzzn
  • 访问人数: | 浏览次数:

      请我喝杯咖啡吧~

      支付宝
      微信