Tentando entender os métodos Ruby .chr e .ord
Eu tenho trabalhado com o Rubychr
eord
métodos recentemente e há algumas coisas que eu não entendo.
Meu projeto atual envolve a conversão de caracteres individuais de e para valores ordinais. Pelo que entendi, se eu tenho uma string com um caractere individual como "A" e chamoord
nele eu tenho sua posição na tabela ASCII que é 65. Chamando o inverso,65.chr
fornece o valor do caractere "A", então isso me diz que Ruby tem uma coleção em algum lugar com valores de caracteres ordenados e pode usar essa coleção para me dar a posição de um caractere específico ou o caractere em uma posição específica. Posso estar errado nisso, por favor, corrija-me se estiver.
Agora também entendo que a codificação de caracteres padrão do Ruby usa UTF-8 para que ele possa trabalhar com milhares de caracteres possíveis. Portanto, se eu pedir algo assim:
'好'.ord
Eu recebo a posição desse personagem que é 22909. No entanto, se eu chamarchr
nesse valor:
22909.chr
Recebo "RangeError: 22909 fora do intervalo de caracteres". Eu só consigochar
para trabalhar em valores de até 255, que é estendido ASCII. Então, minhas perguntas são:
chr
do conjunto de caracteres ASCII estendido, masord
de UTF-8?Existe alguma maneira de dizer ao Ruby para usar codificações diferentes quando ele usa esses métodos? Por exemplo, diga a ele para usar a codificação ASCII-8BIT em vez do que é o padrão?Se for possível alterar a codificação padrão, existe alguma maneira de obter o número total de caracteres disponíveis no conjunto em uso?