Tratando de entender los métodos Ruby .chr y .ord
He estado trabajando con el rubíchr
yord
métodos recientemente y hay algunas cosas que no entiendo.
Mi proyecto actual implica la conversión de caracteres individuales hacia y desde valores ordinales. Según tengo entendido, si tengo una cadena con un carácter individual como "A" y llamoord
en él obtengo su posición en la tabla ASCII que es 65. Llamando al inverso,65.chr
me da el valor de carácter "A", así que esto me dice que Ruby tiene una colección en algún lugar de valores de caracteres ordenados, y puede usar esta colección para darme la posición de un personaje específico, o el personaje en una posición específica. Puedo estar equivocado en esto, corrígeme si lo estoy.
Ahora también entiendo que la codificación de caracteres predeterminada de Ruby usa UTF-8 para que pueda funcionar con miles de caracteres posibles. Por lo tanto, si le pido algo como esto:
'好'.ord
Me sale la posición de ese personaje que es 22909. Sin embargo, si llamochr
en ese valor:
22909.chr
Obtengo "RangeError: 22909 fuera del rango de caracteres". Solo puedo conseguirchar
para trabajar en valores de hasta 255, que se extiende ASCII. Entonces mis preguntas son:
chr
del conjunto de caracteres ASCII extendido peroord
de UTF-8?¿Hay alguna forma de decirle a Ruby que use diferentes codificaciones cuando usa estos métodos? Por ejemplo, dígale que use la codificación ASCII-8BIT en lugar de lo que sea que esté predeterminado.Si es posible cambiar la codificación predeterminada, ¿hay alguna forma de obtener el número total de caracteres disponibles en el conjunto que se está utilizando?