Python이 UCS-2 또는 UCS-4로 컴파일되어 있는지 확인하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/1446347

  •  22-07-2019
  •  | 
  •  

문제

제목이 말하는 것.

$ ./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에서 제거 될 예정입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top