我剛剛從Ruby 1.8.7遷移到Ruby 1.9.2,並且一直在徘徊在字符串編碼問題上。我的MySQL數據庫全是utf8,但每次我從它查詢並查找字符串編碼時,都會得到ASCII-9BIT。Ruby 1.9.x和字符串編碼
ruby-1.9.2-p180 :002 > Artist.find(1043).name.encoding
=> #<Encoding:ASCII-8BIT>
因此,像西格爾羅斯這樣的藝術家打印出「Sigur R \ xC3 \ xB3s」。原來,這導致了一些問題,因爲我的客戶端應用程序期望UTF8 json被我的服務器返回(因爲它一直是這種情況)。臨時解決方法似乎在我的代碼中加入了force_encoding("UTF-8")
,但是它感覺非常混亂,特別是因爲Ruby 1.8.7不需要這些。
我嘗試在我的env文件中添加編碼魔法註釋Encoding.default_external
,我的database.yml文件中添加了encoding
參數,沒有任何效果。
我該如何處理Ruby 1.9.x和字符串編碼?
-
編輯:在我的其他的Rails應用程序(這一直是紅寶石1.9.2自一開始),所有MySQL的弦似乎在UTF-8編碼。但數據庫/表編碼/字符集是完全一樣?!
http://blog.grayproductions.net/articles/ruby_19s_string – Zabba 2012-07-07 18:38:55
你如何連接到你的MySQL數據庫?你設置了連接字符串嗎?你是否指定了字符集?字符集= UTF8; – phoet 2012-07-07 18:42:46
@phoet就像我說的,我在我的database.yml文件中有'encoding'參數。我所有的表都將編碼/字符集設置爲utf8。 – samvermette 2012-07-07 18:44:33