0

我刚刚将我的 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.9Rails 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”。

4

1 回答 1

1

使用诸如od之类的工具(假设您使用的是 Linux)来查看文件的实际内容。如果您有单字节 C5,则您的文件不是 UTF-8。它可能存储在 ISO-8859-1 或类似格式中,Ruby 的抱怨非常正确。

于 2012-10-01T20:05:56.773 回答