2011-09-30 11 views
14

Necesito cambiar la codificación de cadena de rubí predeterminada a UTF-8 en Heroku. Por alguna razón, es US-ASCII.Establecer UTF-8 como codificación de cadena por defecto en Heroku

 
$ heroku console 
Ruby console for myapp.heroku.com 
>> "a".encoding 
=> #<Encoding:ASCII-8BIT> 

Sin embargo, si me quedo IRB localmente puedo obtener un resultado diferente:

 
$ irb 
ruby-1.9.2-p136 :001 > "a".encoding 
=> #<Encoding:UTF-8> 

Ambos funcionan en ruby ​​1.9.2. He intentado configurar esto también, pero no funcionó:

 
Encoding.default_internal = Encoding.default_external = "UTF-8" 

Ideas?

Gracias, Felipe

Respuesta

31

De acuerdo con el personal de apoyo Heroku, esta es la cosa mágica:

 
heroku config:add LANG=en_US.UTF-8 

Aunque heroku console mantendrá cadenas de información de codificación como ASCII-8BIT, su aplicación tendrán algo va a correr con el codificación correcta, basada en la configuración LANG var. Puede verificar que haciendo esto:

 
$ heroku run bash 
Running bash attached to terminal... up, run.2 
[email protected]:/app$ irb 
irb(main):001:0> "a".encoding 
=> #<Encoding:UTF-8> 
+0

Gracias por publicar esto. He estado probando todas las cosas de codificación sin haber llegado hasta aquí. – theschmitzer

+0

Esta solución también funciona para aplicaciones Grails que se ejecutan en Heroku. –

+1

¡Gracias, finalmente puedo dormir bien! – Gavin

Cuestiones relacionadas