python报错PyUnicodeUCS2_AsUTF8String或者PyUnicodeUCS4_AsUTF8String的问题

时间:2021-08-10 23:17:27

判断自己的python是什么编码:python ucs-2与ucs-4编码方式判断


根本原因时python和某个你用的库编译时指定的UCS编码方式不对.

编译python时,可以通过指定--enable-unicode[=ucs[24]]来选择使用UCS2或者UCS4.


如果你的错误是undefined symbol: PyUnicodeUCS2_AsUTF8String,说明你的python编译时使用的是UCS4,反之依然.

解决方案两个:

1,重新编译python,

2,重新编译库.

选择一般是重新编译库.


如果使用的是./configure这样的编译方式,如果你的./configure --help没有unicode的选择,那么在./configure之后,

在config.h内增加

#define Py_UNICODE_SIZE 4

然后再make,make install之类的,就搞定拉.


原理如下:

在头文件/usr/include/python2.7/unicodeobject.h内:

#ifndef Py_UNICODE_WIDE

# define PyUnicode_AsUTF8String PyUnicodeUCS2_AsUTF8String


python2.7.11默认是使用UCS2.