就像标题所说的那样。
$ ./configure --help | grep -i ucs
--enable-unicode[=ucs[24]]
搜索官方文档,我发现了这个:
sys.maxunicode:一个整数,给出 Unicode 字符支持的最大代码点。此值取决于指定 Unicode 字符是存储为 UCS-2 还是 UCS-4 的配置选项。
这里不清楚的是 - 哪些值对应于 UCS-2 和 UCS-4。
该代码预计可在 Python 2.6+ 上运行。
就像标题所说的那样。
$ ./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 中可表示的最大值定义。
我曾经遇到过同样的问题。我在我的 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 大小。
可以像这样查询构建标志。
蟒蛇 2.7:
import sysconfig
sysconfig.get_config_var('Py_UNICODE_SIZE')
蟒蛇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 编译的,因为它会更改生成的二进制文件的名称。
另一种方法是创建一个 Unicode 数组并查看项目大小:
import array
bytes_per_char = array.array('u').itemsize
从array
文档中引用:
'u'
typecode 对应于 Python 的 unicode 字符。在窄 Unicode 版本上,这是 2 字节,在宽版本上,这是 4 字节。
请注意,窄 Unicode 构建和宽 Unicode 构建之间的区别从 Python 3.3 开始被删除,请参阅PEP393。的'u'
类型代码array
自 3.3 起已弃用,并计划在 Python 4.0 中删除。
65535 是 UCS-2: