我刚刚将我的 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 上。自升级以来,我收到有关多字节字符的错误。
我在 stackoverflow 上发现了多个非常相似的问题,但其中没有一个解决方案对我有用:
Ruby 1.9 - Rails 和 Ruby 1.9 和 Rails 3.1、Ruby 1.9.2-p180 和 UTF-8 问题的无效多字节字符 (US-ASCII) 和 无效多字节字符 (US-ASCII)
当我启动我的应用程序并尝试浏览它时,出现多个错误,例如:
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
到目前为止,我已经尝试将以下内容添加到 app/helpers/application_helper.rb作为修复它的第一行:
# encoding: UTF-8
和
# encoding: utf-8
和
# -*- coding: utf-8 -*-
这些都不起作用。
我的 config/application.rb 有:
config.encoding = "utf-8"
我的文本编辑器是 VIM,当我对该文件执行 :set encoding 时,它返回:“encoding=utf-8”。