2011-09-30 22 views
14

Tôi cần thay đổi mã hóa chuỗi ruby ​​mặc định thành UTF-8 trong Heroku. Đối với một số lý do nó là US-ASCII.Đặt UTF-8 làm mã hóa chuỗi mặc định trong Heroku

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

Tuy nhiên, nếu tôi chạy IRB tại địa phương tôi nhận được một kết quả khác nhau:

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

Cả hai chạy trên ruby ​​1.9.2. Tôi cũng đã cố gắng thiết lập cài đặt này nhưng không hoạt động:

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

Ý tưởng?

Cảm ơn, Felipe

Trả lời

31

Theo các nhân viên hỗ trợ Heroku, đây là điều kỳ diệu:

 
heroku config:add LANG=en_US.UTF-8 

Mặc dù heroku console sẽ tiếp tục chuỗi báo cáo mã hóa như ASCII-8BIT, ứng dụng actuall của bạn sẽ được chạy với mã hóa chính xác, dựa trên biến cấu hình LANG var. Bạn có thể kiểm tra kỹ bằng cách thực hiện việc này:

 
$ 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

Cảm ơn bạn đã đăng bài này. Đã cố gắng tất cả các công cụ mã hóa mà không nhận được một nơi nào cho đến khi điều này. – theschmitzer

+0

Giải pháp này cũng hoạt động cho các ứng dụng Grails chạy trên Heroku. –

+1

Cảm ơn, cuối cùng tôi có thể ngủ ngon! – Gavin

Các vấn đề liên quan