是否可以使用Python知道chr接受的最大数量?

时间:2016-01-15 14:42:49

标签: python python-3.x unicode

chr内置函数的Python文档中,chr接受的最大值是1114111(十进制)或0x10FFFF(基数为16)。事实上

>>> chr(1114112)
Traceback (most recent call last):
  File "<pyshell#20>", line 1, in <module>
    chr(1114112)
ValueError: chr() arg not in range(0x110000)

我的第一个问题如下,为什么这个数字呢?第二个问题是:如果此数字发生变化,是否可以从Python命令中了解chr接受的最大值?

1 个答案:

答案 0 :(得分:11)

使用sys.maxunicode

  

一个整数,给出最大Unicode代码点的值,即1114111(十六进制0x10FFFF)。

在我的Python 2.7 UCS-2版本中,unichr()支持的最大Unicode字符是0xFFFF:

>>> import sys
>>> sys.maxunicode
65535

但是Python 3.3和更新版本切换到Unicode字符串的新内部存储格式,现在总是 0x10FFFF。请参阅PEP 393

0x10FFFF是Unicode标准中定义的最大Unicode代码点。引用Wikipedia article on Unicode

  

Unicode定义了1,114,112个代码点的代码空间,范围为0到10FFFF。