2012-01-28 14 views
8

Hasta hace poco todo funcionaba bien en mis máquinas, pero desde hace unos días sigo recibiendo un error Encoding::UndefinedConversionError: U+2713 from UTF-8 to US-ASCII cada vez que publico algo desde el navegador al servidor.Ruby 1.9.3 UndefinedConversionError

En primer lugar, ya puestos estaban involucrados Probé la cosa más obvia con la adición de codificación a la database.yml:

development: 
    adapter: postgresql 
    hostname: localhost 
    port: 5432 
    username: mikael 
    password: 
    database: dev 
    encoding: utf8 

Si instalo rubí y el rubí debug19-debug-base19 y los carriles de correr con:

rails s --environment=development --debug 

Ahora todo está funcionando bien. ¿Cómo diablos se supone que debo descubrir la causa del problema para poder solucionarlo?

EDIT 1:

1.9.3p0 :001 > Encoding.default_internal 
=> #<Encoding:UTF-8> 
1.9.3p0 :002 > Encoding.default_external 
=> #<Encoding:UTF-8> 

EDIT 2: Si me quedo en el modo de producción todo funciona bien.

+0

'U + 2713' es la marca de verificación (' utf8 = ✓') que utiliza Rails en las últimas versiones para verificar que puede trabajar con datos UTF-8. ¿Seguro que no actualizaste nada? – phoet

+0

Ejecute la consola de rails y marque 'Encoding.default_internal' y' Encoding.default_external'. – taro

+1

¿De dónde viene el error? ¿Tu código o en algún lugar profundo dentro de Rails? –

Respuesta

1

Esto suena como un bug que se ha informado en Rails 3.1.2 tiene un workaround y la próxima versión de 1.9.3 debería solucionar el problema

+1

Eso es y parece que los carriles 3.2 han traído de vuelta el mismo error anterior que se arregló en 3.1.2 o tal vez es una gema que lo provoca. – mhenrixon

+0

El enlace provisional no está disponible, ¿puede volver a publicarlo? – Rizon

14

intente configurar LC_ALL y LANG variable en su concha. Agregue estas líneas a su ~/.profile, ~/.bash_profile, ~/.zprofile o similar, dependiendo de su sistema.

export LC_ALL=en_US.UTF-8 
export LANG=en_US.UTF-8 

Usted puede obtener una lista de todas las locales mediante la ejecución de locale -a. Al final se debería ver algo similar cuando se ejecuta locale en una nueva ventana de terminal:

LANG="en_US.UTF-8" 
LC_COLLATE="en_US.UTF-8" 
LC_CTYPE="en_US.UTF-8" 
LC_MESSAGES="en_US.UTF-8" 
LC_MONETARY="en_US.UTF-8" 
LC_NUMERIC="en_US.UTF-8" 
LC_TIME="en_US.UTF-8" 
LC_ALL="en_US.UTF-8" 
+0

¿qué tal en el sistema de Windows? – rony36

+0

@ rony36 Supongo que deberías exportar estas variables y también debería corregir estos errores en Windows. Eche un vistazo aquí sobre cómo hacerlo http://superuser.com/a/284351/79208 – Lenart

+0

Fantástica solución, gracias.Capybara 'puts page.html' estaba arrojando un error similar, y esto funcionó. –

0

Mi servidor de rieles estaba lanzando este error exacto de su clase de logger.

Al actualizar a la última versión de Rails (3.2.13), desapareció. Acabo de cambiar mi Gemfile e hice un conjunto de colas de actualización.

3

Tuve este problema hoy. Mi LC_ALL estaba en blanco, pero todo lo demás parecía correcto según la respuesta de Lenart. Cambiar LC_ALL tampoco me lo solucionó.

La solución para mi proyecto era actualizar rspec de 2.14.6 a 2.14.7.

Cuestiones relacionadas