Есть ли какая-то конкретная причина, по которой функция chr не примет более высокий ответ?

Кто-нибудь знает, есть ли конкретная причина, по которой функция chr выдает ошибку, если я ввожу число больше 1114111? НАПРИМЕР:

>>> chr(1114111)
'\U0010ffff'
>>> chr(1114112)

Трассировка (последний последний вызов): файл "", строка 1, в chr (1114112) ValueError: chr() arg не в диапазоне (0x110000)


person Community    schedule 27.08.2019    source источник


Ответы (2)


Да, есть определенная причина. Это потому, что это самая высокая кодовая точка в кодовом пространстве Unicode. Из текущего стандарта (12.0), раздел 1.3 Text handling, под Text elements:

Закодированный символ представлен числом от 0 до 10ffff16, называемым кодовой точкой.

person paxdiablo    schedule 27.08.2019
comment
Спасибо! Это решило мою проблему. - person ; 28.08.2019

Числа должны быть в определенном диапазоне, чтобы быть действительными, поэтому нет, он не примет число больше или равное 0x110000, потому что это наименьшее положительное целое число, которое не находится в кодовом пространстве Unicode.

person Number File    schedule 27.08.2019