我剛剛將我的Ruby版本從1.8.7升級到1.9.2(使用RVM)。所以Ruby是:ruby 1.9.3p194(2012-04-20修訂版35410)[x86_64-darwin12.2.0]。該應用程序在Rails 3.2.8上。自升級以來,我收到一個關於多字節字符的錯誤。Ruby 1.9中無效的多字節字符,設置編碼:utf-8不能修復它
我發現多個計算器上非常相似的問題,但沒有在他們的解決方案,爲我工作:
Ruby 1.9 - invalid multibyte char (US-ASCII) 和 invalid multibyte char (US-ASCII) with Rails and Ruby 1.9 和 Rails 3.1, Ruby 1.9.2-p180 and UTF-8 issues
當我開始我的應用程序,並嘗試瀏覽到它,我出現多個錯誤,例如:
SyntaxError (/Users/antun/ror/parktwor3svn/app/helpers/application_helper.rb:35: 無效的多字節字符(UTF-8) /Users/antun/ror/parktwor3svn/app/helpers/application_helper.rb: 35: 語法錯誤,意想不到的tIDENTIFIER,期待 ']' ......美國 「 」阿富汗「, 」土地羣島「, 」阿爾巴尼亞「,」 阿爾及爾...
有問題的代碼(在? app/helpers/application_helper.rb)看起來像這樣。爲簡潔起見,我將它簡化爲前幾個國家 - 「奧蘭羣島」中的「Å」是觸發它的角色之一。當我在編輯器中查找那個角色時,我得到:00c5。 (其他國家/地區名稱中有更多的unicode字符)。
def countries
return ["", "United States", "Afghanistan", "Åland Islands", "Albania"]
end
到目前爲止,我已經嘗試添加下列到應用程序/傭工/ application_helper.rb 作爲第一行來解決它:
# encoding: UTF-8
和
# encoding: utf-8
和
# -*- coding: utf-8 -*-
這些都沒有工作。
我的config/application.rb中有:
config.encoding = "utf-8"
我的文本編輯器是VIM,當我做:集編碼,在該文件上,它返回: 「編碼= UTF-8」。
謝謝!這使我朝着正確的方向前進。我在OSX上,所以我使用命令「file -I app/helpers/application_helper.rb」發現它實際上保存在charset = iso-8859-1中。然後我再次在VIM中編輯它,並通過調用set fileencoding = utf-8來糾正它。 (事實證明,在VIM中,調用:set編碼不會更改文件的編碼;我在這裏發現:http://stackoverflow.com/a/1459612/1597106)。 – antun