Nicht dass ich Ruby jemals mit einem hässlichen Entlein vergleichen würde oder so, aber eine Klasse war nicht so gelungen, weil sie eigentlich etwas anderes war: String
Seit geraumer Zeit geistert Unicode durch die Datenwelt, neben anderen Multibyte-Encodings, die ja für die Asiatischen Zeichensätze eh unumgänglich sind.
Vor längerer Zeit stellte ich ganz am Anfang meiner Ruby-Experimente in einem (nicht mehr existierenden) englischsprachigen Ruby-Forum die Frage nach den Unicode-Möglichkeiten mit Ruby. Ich erhielt die Antwort, dass Ruby "encoding agnostic" sei.
Schnell stellte ich dann fest, dass die Klasse String eigentlich ihren Namen nicht verdient, sondern eher Bytes hätte heissen müssen. Dies legte beispielsweise 'a'[0] auch nahe, weil man nicht etwa 'a' als Antwort erhielt, sondern 97. Alle anderen Methoden der Klasse verhielten sich entsprechend.
Lange Zeit geisterten dann diverse Initiativen oder Ideen für eine bessere Unicode-Unterstützung durch die Klasse String im Internet-Universum herum - nur - es passierte nicht wirklich was und ich war bestimmt nicht der einzige der langsam skeptisch wurde.
Dann las ich beinah ungläubig eine eigenclass-RSS-Mitteilung und den Artikel über die Änderungen der Klasse String.
Erste Tests mit einer aktuellen Version zeigen zwar, dass noch nicht alles vollständig ist (auch murphy machte schon diese Erfahrung), aber Strings für Ruby 1.9.1 sind auf dem besten Weg!
Kommentar schreiben
Kommentare
Auch mit Ruby 1.8.6 kann man schon ein bisschen Unicode schnuppern ( http://snippets.dzone.com/posts/show/4527 )!
Das ist ja richtig, aber die Unterstützung von mehr als ASCII gehört heutzutage direkt in die Sprache hinein - und das kommt erst ab Ruby 1.9.1. Glücklicherweise kommt es überhaupt...
Noch ein paar zusätzliche Worte, warum ich das im Sprachkern (Core oder Stadard-Library) sehen möchte, und nicht als zusätzliche Bibliotheken. Eines der möglichen Ruby-Anwendungsgebiete besteht darin, für/in Firmen ad-hoc-Tools zur Bearbeitung von Protollen und Generierung von Reports bereitzustellen - eine der Perl-Domänen. Dank Rails ist Ruby in vielen Firmen inzwischen bekannt und sogar schon installiert, zumindest hat man seit einiger Zeit keine Probleme mehr, wenn man als Voraussetzung für ein Programm eine (bestimmte) Ruby-Installation angibt. Das wird völlig anders, wenn man noch diverse Zusatzbedingungen anfordert, wie die Installation bestimmter Gems oder anderer Sachen. In solch einem Fall bleibt oft nochts anderes üblich Programm und Interpreter mittels RubyScript2Exe in eine ausführbare Datei zu laden, die dann natürlich absurd gross wird. - "String" als eine der wichtigsten Kernklassen sollte deshalb unbedingt etwas mehr können, als Bytes zu bearbeiten - das ist wirklich veraltete Technik aus dem letzten Jahrtausend.