Попытка понять методы Ruby .chr и .ord

Я работал с Рубиномchr а такжеord методы в последнее время, и есть несколько вещей, которые я не понимаю.

Мой текущий проект включает в себя преобразование отдельных символов в и из порядковых значений. Насколько я понимаю, если у меня есть строка с отдельным символом, например «А», и я звонюord на нем я получаю свою позицию в таблице ASCII, которая составляет 65. Вызов обратного,65.chr дает мне значение символа «A», так что это говорит мне о том, что у Ruby есть где-то коллекция упорядоченных значений символов, и он может использовать эту коллекцию, чтобы дать мне положение определенного символа или символа в определенной позиции. Я могу ошибаться, поправьте меня, если я ошибаюсь.

Теперь я также понимаю, что кодировка символов по умолчанию в Ruby использует UTF-8, поэтому он может работать с тысячами возможных символов. Таким образом, если я попрошу что-то вроде этого:

'好'.ord

Я получаю позицию этого персонажа 22909. Однако, если я позвонюchr на это значение:

22909.chr

Я получаю «RangeError: 22909 вне диапазона символов». Я могу только получитьchar работать на значениях до 255, что является расширенной ASCII. Итак, мои вопросы:

Почему Ruby, кажется, получает значения дляchr из расширенного набора символов ASCII, ноord от UTF-8?Есть ли способ сказать Ruby использовать разные кодировки, когда он использует эти методы? Например, скажите ему использовать кодировку ASCII-8BIT вместо того, к чему он по умолчанию применяется?Если возможно изменить кодировку по умолчанию, есть ли способ получить общее количество символов, доступных в используемом наборе?

Ответы на вопрос(2)

Ваш ответ на вопрос