utf8 rails ruby utf-8 internationalization

ruby - utf8 - rails encoding utf 8



¿Qué opciones existen ahora para implementar UTF8 en Ruby y RoR? (3)

Tras el desarrollo de Ruby muy de cerca, aprendí que la codificación de caracteres detallada se implementa en Ruby 1.9. Mi pregunta por el momento es: ¿cómo se puede usar Ruby en este momento para hablar con una base de datos que almacena todos los datos en UTF8?

Antecedentes: estoy involucrado en un nuevo proyecto donde Ruby / RoR es al menos una opción. Pero el proyecto debe basarse en un juego de caracteres internacionalizado (está distribuido en muchos países), preferiblemente UTF8.

Entonces, ¿cómo lidias con eso? Gracias por adelantado.


Aunque no lo he probado, la biblioteca de caracteres codificados (actualmente en alfa) agrega métodos a la clase String para manejar UTF-8 y otros. Su página en RubyForge está aquí . Está diseñado para Ruby 1.8.

Sin embargo, es mi experiencia que, usando Ruby 1.8, si almacena datos en su base de datos como UTF-8, Ruby no se interpondrá en el camino, siempre y cuando la 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!

Perdona 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.


"Unicode ahoy! Mientras que Rails siempre ha sido capaz de almacenar y mostrar unicode sin carne, ha sido un poco más complicado truncar, invertir u obtener la longitud exacta de una cadena UTF-8. Necesitabas jugar con KCODE y aunque muchas personas lo hicieron funcionar, no fue tan fácil de conectar como podría haber esperado (o incluso esperado).

Entonces, dado que Ruby no estará consciente de los multibytos hasta este momento el próximo año, Rails 1.2 presenta ActiveSupport :: Multibyte para trabajar con cadenas Unicode. Llame al método chars en su cadena para comenzar a trabajar con caracteres en lugar de bytes. " Haga clic aquí para obtener más información.


Ruby 1.8 funciona bien con cadenas UTF-8 para operaciones básicas con las cuerdas. Dependiendo de la necesidad de su aplicación, algunas operaciones no funcionarán o no funcionarán como se espera.

P.ej:

1) El tamaño de las cadenas le dará bytes, no caracteres, ya que la compatibilidad con varios bytes aún no está allí. ¿Pero necesitas saber el tamaño de tus cadenas en caracteres?

2) No dividir una cadena en un límite de caracteres. ¿Pero necesitas esto? Etc.

3) El orden de clasificación será funky si se clasifica en Ruby. La sugerencia de usar el DB para ordenar es una buena idea.

etc.

Comentario de la revista sobre clasificación de datos después de leer de db: Como se indicó, los resultados probablemente no coincidirán con las expectativas de los usuarios. Entonces la solución es ordenar el db. Y, por lo general, será más rápido, de todos modos, las bases de datos están diseñadas para ordenar los datos.

Resumen: la aplicación RoR 1.8.6 My Ruby funciona bien con caracteres Unicode internacionales procesados ​​y almacenados como UTF-8 en los navegadores modernos. Los idiomas de derecha a izquierda funcionan bien también. Problemas principales: asegúrese de que su base de datos y todas las páginas web estén configuradas para usar UTF-8. Si ya tiene algunos datos en su base de datos, tendrá que pasar por un proceso de conversión para cambiarlo a UTF-8.

Saludos,

Larry