Python이 UCS-2 또는 UCS-4로 컴파일되어 있는지 확인하는 방법은 무엇입니까?
문제
제목이 말하는 것.
$ ./configure --help | grep -i ucs
--enable-unicode[=ucs[24]]
공식 문서를 검색하면 다음을 발견했습니다.
sys.maxunicode: 유니 코드 문자에 대한 최대 규모의 지원 코드 포인트를 제공하는 정수. 그만큼 값 이 중 유니 코드 문자가 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에서 표현할 수있는 최대 값으로 정의됩니다.
나는이 같은 문제를 한 번 받았다. 나는 내 위키에서 나 자신을 위해 그것을 문서화했다
http://arcoleo.org/dsawiki/wiki.jsp?page=python%20UTF%20-%20UCS2%20OR%20UCS4
나는 썼다 -
import sys
sys.maxunicode > 65536 and 'UCS4' or 'UCS2'
Sysconfig 파이썬의 구성 변수에서 유니 코드 크기를 알려줍니다.
빌드 플래그는 이렇게 쿼리 될 수 있습니다.
파이썬 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#p425tag.py-83:89.
파이썬이 UCS-2 또는 UCS-4로 컴파일되어 있는지 확인 해야하는 휠 프로젝트에서 나옵니다. 생성 된 이진 파일의 이름이 변경되기 때문입니다.
또 다른 방법은 유니 코드 어레이를 만들고 항목을 보는 것입니다.
import array
bytes_per_char = array.array('u').itemsize
인용 array
문서:
그만큼
'u'
TypEcode는 Python의 유니 코드 문자에 해당합니다. 좁은 유니 코드 빌드에서 이것은 2 바이트이며, 넓은 빌드에서는 4 바이트입니다.
좁은 유니 코드 빌드와 넓은 유니 코드 빌드의 차이점은 Python 3.3에서 떨어집니다. PEP393. 그만큼 'u'
typecode for array
3.3 이후 더 이상 사용되지 않고 Python 4.0에서 제거 될 예정입니다.