64

まさにタイトル通り。

$ ./configure --help | grep -i ucs
  --enable-unicode[=ucs[24]]

公式ドキュメントを検索すると、次のことがわかりました。

sys.maxunicode : Unicode 文字でサポートされている最大のコード ポイントを示す整数。このは、Unicode 文字を UCS-2 または UCS-4 として保存するかどうかを指定する構成オプションによって異なります。

ここで明確でないのは、UCS-2 と UCS-4 に対応する値です。

このコードは、Python 2.6 以降で動作することが期待されています。

4

7 に答える 7

126

--enable-unicode = ucs4でビルドした場合:

>>> import sys
>>> print sys.maxunicode
1114111

--enable-unicode = ucs2でビルドした場合:

>>> import sys
>>> print sys.maxunicode
65535
于 2009-09-18T19:33:45.007 に答える
19

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 で表現可能な最大値によって定義されます。

于 2009-09-18T19:20:44.260 に答える
11

私はかつてこの同じ問題を抱えていました。私は自分のwikiでそれを自分で文書化しました

http://arcoleo.org/dsawiki/Wiki.jsp?page=Python%20UTF%20-%20UCS2%20or%20UCS4

私が書いた -

import sys
sys.maxunicode > 65536 and 'UCS4' or 'UCS2'
于 2009-09-20T02:50:11.820 に答える
10

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')
于 2016-03-04T16:40:42.333 に答える
1

もう 1 つの方法は、Unicode 配列を作成してアイテムサイズを確認することです。

import array
bytes_per_char = array.array('u').itemsize

arrayドキュメントからの引用:

typecodeは'u'Python の unicode 文字に対応します。ナロー Unicode ビルドでは 2 バイト、ワイド ビルドでは 4 バイトです。

狭い Unicode ビルドと広い Unicode ビルドの区別は、Python 3.3 以降では削除されていることに注意してください。 PEP393を参照してください。の'u'型コードarrayは 3.3 以降非推奨であり、Python 4.0 で削除される予定です。

于 2016-09-07T11:28:30.143 に答える
1

私は同じ問題を抱えていて、まさにそれを行い、同じ問題を抱えている人々にとって興味深いかもしれない半公式のコードを見つけました: ?at=default&fileviewer=file-view-default#pep425tags.py-83:89 .

これは、生成されたバイナリ ファイルの名前が変更されるため、python が ucs-2 または ucs-4 でコンパイルされているかどうかを確認する必要がある wheel プロジェクトからのものです。

于 2016-08-17T07:28:02.563 に答える