【问题标题】:Is it possible to know the maximum number accepted by chr using Python?是否有可能知道 chr 使用 Python 接受的最大数量?
【发布时间】:2016-04-21 04:37:16
【问题描述】:

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接受的最大值?

【问题讨论】:

    标签: python python-3.x unicode


    【解决方案1】:

    使用sys.maxunicode:

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

    在我的 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 定义了一个由 0 到 10FFFF 范围内的 1,114,112 个代码点组成的代码空间。

    【讨论】:

    • 维基百科的1114112和Python的文档1114111的区别是因为Python是从0开始的,所以偏移了一个?
    • @Andrejs - 这是因为 Unicode 从零开始计数,而不是专门从 python 开始计数。从 0 到 1114111 共有 1114112 个代码点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-19
    • 2012-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多