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 上にあります。アップグレードしてから、マルチバイト文字に関するエラーが表示されます。

スタックオーバーフローで非常によく似た問題を複数見つけましたが、それらの解決策はどれもうまくいきませんでした:

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、']' を期待しています ... States"、"Afghanistan"、"?land Islands"、"Albania"、"Algeri...

問題のあるコード (app/helpers/application_helper.rb 内) は次のようになります。簡潔にするために、最初の数カ国だけに絞り込みました。「オーランド諸島」の「Å」は、それを引き起こす文字の 1 つです。エディターでその文字を検索すると、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 を使用していると仮定) を使用して、ファイルの実際の内容を確認します。1 バイトの C5 の場合、ファイルは UTF-8 ではありません。それはおそらく ISO-8859-1 かそれに類するものに保存されており、Ruby はまったく正しく不平を言っています。

于 2012-10-01T20:05:56.773 に答える