首页 > 解决方案 > 从源代码构建的 Python 找不到 UTF-32-BE 编码

问题描述

我正在开发定制的linux。当我使用requests做一些 HTTP 发布时,出现了一个导入异常,在idna中。再说一句,我的系统是little-endian linux。

>>> from uts46data import uts46data
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
LookupError: unknown encoding: utf-32-be
>>>

我检查了编码如下。

>>> import sys
>>> sys.getdefaultencoding()
'utf-8'
>>> sys.getfilesystemencoding()
'ANSI_X3.4-1968'

我想这是一个编码问题,那我该怎么办?

更多信息如下。

/ # python -c "import sys;print(sys.version)"
2.7.8 (default, Jul  7 2020, 07:25:41) 
[GCC 7.3.1 20180425]
/ # python -c "import codecs;print codecs.lookup('utf-32-be')"
Traceback (most recent call last):
  File "<string>", line 1, in <module>
LookupError: unknown encoding: utf-32-be
/ # 

标签: pythonpython-2.7buildcpythonpython-internals

解决方案


来回答我自己。

Python 将从 encodings 目录定位它的编码文件。您可以从 Python 源包中复制相应的编码文件,位于 Lib/encodings 目录下。


推荐阅读