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