Aunque no lo he probado, la biblioteca de caracteres-codificaciones (actualmente en alfa) agrega métodos a la clase String para manejar UTF-8 y otros. Su página en RubyForge es here. Está diseñado para Ruby 1.8.
Es mi experiencia, sin embargo, que si usa Ruby 1.8, si almacena datos en su base de datos como UTF-8, Ruby no se interpondrá mientras su codificación de caracteres en el encabezado HTTP sea UTF-8 . Es posible que no pueda operar en las cuerdas, pero no romperá nada. Ejemplo:
file.txt:
¡Hola! ¿Como estás? Leí el artículo. ¡Fue muy excellente!
Perdón mi pobre español; fue el mejor ejemplo de Unicode que pude encontrar.
in irb:
str = File.read("file.txt")
=> "\302\241Hola! \302\277Como est\303\241s? Le\303\255 el art\303\255culo. \302\241Fue muy excellente!\n"
str += "Foo is equal to bar."
=> "\302\241Hola! \302\277Como est\303\241s? Le\303\255 el art\303\255culo. \302\241Fue muy excellente!\nFoo is equal to bar."
str = " " + str + " "
=> " \302\241Hola! \302\277Como est\303\241s? Le\303\255 el art\303\255culo. \302\241Fue muy excellente!\nFoo is equal to bar. "
str.strip
=> "\302\241Hola! \302\277Como est\303\241s? Le\303\255 el art\303\255culo. \302\241Fue muy excellente!\nFoo is equal to bar."
Básicamente, solo tratará al UTF-8 como ASCII con caracteres impares en él. No ordenará de forma lexigráfica si los puntos de código están desordenados; sin embargo, clasificará por punto de código. Ejemplo:
"\302" <=> "\301"
=> -1
¿Cuánto planea operar con los datos en la aplicación Rails, de todos modos? La mayoría de los clasificadores, etc., generalmente los hace tu motor de base de datos.
Lamento decirlo pero como se indicó en la pregunta, no estoy interesado en Ruby 1.9 o Ruby 2.0 atm. Una lectura/escritura en una base de datos podría estar bien, también, pero ¿qué pasa, digamos, ordenar estos datos después? – Georgi
¿Haría la clasificación en la ayuda de consulta SQL? –