Versuchen, die Ruby-Methoden .chr und .ord zu verstehen

Ich habe mit dem Ruby gearbeitetchr undord Methoden in letzter Zeit und es gibt ein paar Dinge, die ich nicht verstehe.

ei meinem aktuellen Projekt werden einzelne Zeichen in Ordinalwerte und von Ordinalwerten konvertiert. So wie ich es verstehe, wenn ich einen String mit einem individuellen Zeichen wie "A" habe und @ ruord drauf bekomme ich seine Position in der ASCII-Tabelle, die 65 ist. Aufruf der Umkehrung,65.chr gibt mir den Zeichenwert "A", was bedeutet, dass Ruby eine Sammlung von geordneten Zeichenwerten hat und diese Sammlung verwenden kann, um mir die Position eines bestimmten Zeichens oder das Zeichen an einer bestimmten Position zu geben. Ich kann mich irren, bitte korrigiere mich, wenn ich es bin.

Now Ich verstehe auch, dass Rubys Standardzeichenkodierung UTF-8 verwendet, sodass es mit Tausenden von möglichen Zeichen arbeiten kann. Also, wenn ich danach frage:

'好'.ord

Ich erhalte die Position des Zeichens, das 22909 ist. Wenn ich jedoch @ anruchr auf diesem Wert:

22909.chr

Ich erhalte "RangeError: 22909 außerhalb des Zeichenbereichs." Ich kann nur @ bekommchar, um mit Werten bis 255 zu arbeiten, die ASCII-erweitert sind. Also meine Fragen sind:

Warum scheint Ruby Werte für @ zu bekommchr aus dem erweiterten ASCII-Zeichensatz, aberord von UTF-8?Kann Ruby auf irgendeine Weise angewiesen werden, bei diesen Methoden andere Codierungen zu verwenden? Sagen Sie ihm zum Beispiel, er soll ASCII-8BIT-Codierung anstelle dessen verwenden, was standardmäßig verwendet wirWenn es möglich ist, die Standardkodierung zu ändern, gibt es eine Möglichkeit, die Gesamtzahl der in dem verwendeten Satz verfügbaren Zeichen zu ermitteln?

Antworten auf die Frage(4)

Ihre Antwort auf die Frage