【问题标题】:Is there any specific reason why the chr function won't accept a higher answer? [duplicate]chr 函数不接受更高的答案有什么具体原因吗? [复制]
【发布时间】:2019-12-31 10:50:45
【问题描述】:
如果我输入一个大于 1114111 的数字,是否有特定原因导致 chr 函数抛出错误?
例如:
>>> chr(1114111)
'\U0010ffff'
>>> chr(1114112)
Traceback(最近一次调用最后一次):
文件“”,第 1 行,在
chr(1114112)
ValueError: chr() arg 不在范围内(0x110000)
【问题讨论】:
标签:
python
unicode
ascii
built-in
chr
【解决方案1】:
是的,是一个特定的原因。这是因为这是 Unicode 代码空间中的最高代码点。从当前标准(12.0),1.3 Text handling 部分,Text elements 下:
编码字符由从0 到10ffff<sub>16</sub> 的数字表示,称为代码点。
【解决方案2】:
数字必须在一定范围内才能有效,所以不,它不会接受大于或等于 0x110000 的数字,因为这是不在 unicode 代码空间中的最小正整数。