Codificación en Ruby 1.8.7 o 1.9.2

He estado tratando de usar la gem ‘codificaciones de caracteres‘ que no se integran en 1.9.2, pero sí en 1.8.7, pero incluso cuando requiero ‘encoding / character / utf-8’ todavía no puedo hacer la más simple encoding

require 'encoding/character/utf-8' str = u"hëllö" str.length #=> 5 str.reverse.length #=> 5 str[/ël/] #=> "ël" 

yo obtengo

 ruby-1.8.7-p302 > # encoding: utf-8 ruby-1.8.7-p302 > require 'encoding/character/utf-8' => nil ruby-1.8.7-p302 > str = u"hll" => u"hll" ruby-1.8.7-p302 > str.length => 3 ruby-1.8.7-p302 > #=> 5 ruby-1.8.7-p302 > str.reverse.length => 3 ruby-1.8.7-p302 > #=> 5 ruby-1.8.7-p302 > str[/l/] => "l" 

Mi pregunta es, ¿existe una biblioteca de encoding realmente agradable que pueda aceptar asignaciones o posiblemente todos los caracteres diferentes? O tal vez utilizar utf-16? He intentado el código mágico “# encoding: utf-8” que tampoco parece que lo haga. Gracias

Me temo que no entiendo tu pregunta. ¿Tiene problemas con el archivo de código fuente? Lo he probado tanto en la consola como en un script ruby ​​(1.8.7), y funciona.

 require 'rubygems' require 'encoding/character/utf-8' str = u'hëllö' puts str.length puts str.reverse.length puts str[/ël/] 

y la salida funciona como se espera

 5 5 ël 

En Ruby 1.9+ (probé en la vista previa 1.9.2) no necesita una biblioteca, ya que la encoding es compatible con la biblioteca estándar. Vea esta publicación para más información al respecto. http://yehudakatz.com/2010/05/05/ruby-1-9-encodings-a-primer-and-the-solution-for-rails/

esto funciona sin las extensiones c y en 1.8 / 1.9, no todos los métodos de cadena funcionan (pero son fáciles de agregar)

https://github.com/grosser/string19

 require 'rubygems' require 'string19' String19('hëllö').length == 5