2011-09-30 106 views
14

我需要在Heroku中將默認ruby字符串編碼更改爲UTF-8。由於某些原因,它是US-ASCII。在Heroku中將UTF-8設置爲默認字符串編碼

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

但是,如果我跑IRB本地我得到不同的結果:

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

上的紅寶石1.9.2運行兩者。我試過設置這個,但沒有工作:

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

想法?

感謝, 費利佩

回答

31

按照Heroku的支持人員,這是一個神奇的東西:

 
heroku config:add LANG=en_US.UTF-8 

雖然heroku console將繼續報告字符串編碼爲ASCII-8BIT,你的實際工作中的應用程序將與運行正確的編碼,基於LANG config var。 你可以仔細檢查,通過這樣做:

 
$ 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

感謝張貼這個。一直在嘗試所有編碼的東西,但沒有得到一個地方,直到這。 – theschmitzer

+0

該解決方案也適用於在Heroku上運行的Grails應用程序。 –

+1

謝謝,我終於可以睡好了! – Gavin

相關問題