rails how content_for application ruby-on-rails ruby-on-rails-3 utf-8 internationalization character-encoding

how - Ruby on Rails 3, codificaciones de caracteres incompatibles: UTF-8 y ASCII-8BIT con i18n



render a partial rails (5)

¿Estás seguro de que tu archivo es.yml se guardó como UTF-8?

Si está en Windows, use http://notepad-plus-plus.org/ para asegurarse.

Tengo algunos problemas con la pareja Rails 3.0.1, Ruby 1.9.2 y la localización de mi sitio web.

El problema es bastante simple, tengo algo así en una vista:

f.input :zip_code, :label => I18n.t(''labels.zip_code'')

y un archivo es.yml:

es: labels: zip_code: "Este código postal no es valido."

No hay problemas con el archivo en.yml (es ASCII puro) pero cuando el sitio web está configurado con i18n.locale == ''es'' este error:

incompatible character encodings: UTF-8 and ASCII-8BIT

Estuve mirando por un tiempo pero no encontré la manera de usar mis archivos de traducción UTF-8.

¿Alguno sabe cómo hacerlo funcionar?

Gracias por tu ayuda.


Asegúrese de tener config.encoding = "utf-8" en su config/application.rb . Además, su archivo de traducción de ejemplo no coincide con la clave que está buscando ( com_name y first_name ), pero supongo que podría ser simplemente un error tipográfico.


Ok, entonces el problema se resolvió después de algunas horas de googlear ...

En realidad, había dos errores en mi código. El primero fue un error de codificación de archivo y el segundo fue el problema con la configuración de la base de datos MySQL.

Primero, para resolver el error causado por MySQL usé estos dos artículos:

http://www.dotkam.com/2008/09/14/configure-rails-and-mysql-to-support-utf-8/

http://www.rorra.com.ar/2010/07/30/rails-3-mysql-and-utf-8/

Segundo, para resolver el problema de codificación de archivos agregué estas 2 líneas en mi config / environment.rb

Encoding.default_external = Encoding::UTF_8 Encoding.default_internal = Encoding::UTF_8

Espero que esto ayude a alguien :)


Resolví la mayoría de los problemas combinando muchas soluciones:

  • Asegúrese de que application.rb tenga esta línea: config.encoding = "utf-8" .
  • Asegúrate de estar usando la gema ''mysql2''
  • Poniendo # encoding: utf-8 en la parte superior de cualquier archivo que contenga caracteres utf-8.
  • Agregue las siguientes dos líneas sobre el <App Name>::Application.initialize! línea en environment.rb :

    Encoding.default_external = Encoding::UTF_8 Encoding.default_internal = Encoding::UTF_8

http://rorguide.blogspot.com/2011/06/incompatible-character-encodings-ascii.html


Usar esta función de desempaquetado me ayudó a resolver esto finalmente, intente esto si obtiene el mensaje de error no se puede convertir:

myString.unpack(''U*'').pack(''U*'')