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:

¿Por qué Ruby parece estar obteniendo valores parachr 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?

Respuestas a la pregunta(2)

Su respuesta a la pregunta