[英]How to find out if Python is compiled with UCS-2 or UCS-4?
正如标题所说的那样。
$ ./configure --help | grep -i ucs
--enable-unicode[=ucs[24]]
搜索官方文档,我发现了这个:
sys.maxunicode :一个整数,给出Unicode字符支持的最大代码点。 其值取决于配置选项,该选项指定Unicode字符是否存储为UCS-2或UCS-4。
这里不清楚的是 - 哪些值对应于UCS-2和UCS-4。
该代码预计适用于Python 2.6+。
使用--enable-unicode = ucs4构建时:
>>> import sys
>>> print sys.maxunicode
1114111
使用--enable-unicode = ucs2构建时:
>>> import sys
>>> print sys.maxunicode
65535
UCS-2为0xFFFF(或65535),UCS-4为0x10FFFF(或1114111):
Py_UNICODE
PyUnicode_GetMax(void)
{
#ifdef Py_UNICODE_WIDE
return 0x10FFFF;
#else
/* This is actually an illegal character, so it should
not be passed to unichr. */
return 0xFFFF;
#endif
}
UCS-4模式中的最大字符由UTF-16中可表示的maxmimum值定义。
我有过同样的问题一次。 我在我的wiki上为自己记录了这个
http://arcoleo.org/dsawiki/Wiki.jsp?page=Python%20UTF%20-%20UCS2%20or%20UCS4
我写 -
import sys
sys.maxunicode > 65536 and 'UCS4' or 'UCS2'
sysconfig将从python的配置变量中告诉unicode大小。
可以像这样查询构建标志。
Python 2.7:
import sysconfig
sysconfig.get_config_var('Py_UNICODE_SIZE')
Python 2.6:
import distutils
distutils.sysconfig.get_config_var('Py_UNICODE_SIZE')
我遇到了同样的问题,并发现了一个半官方的代码,它确实可以解决同样的问题: https : //bitbucket.org/pypa/wheel/src/cf4e2d98ecb1f168c50a6de496959b4a10c6b122/wheel/pep425tags.py ?at = default&fileviewer = file-view-default#pep425tags.py-83:89 。
它来自wheel项目,它需要检查python是否使用ucs-2或ucs-4编译,因为它将更改生成的二进制文件的名称。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.