0

アプリを Rails 2.3.8 / Ruby 1.8.7 から 2.3.14 / Ruby 1.9.2 に移行しました - 簡単ではありませんが、基本的には機能します。私が常に抱えている問題は、時折 Haml テンプレートで次のエラーが発生することです。

ActionView::TemplateError (invalid byte sequence in UTF-8) on line #....

これはエンコーディングの問題であり、( を使用して) 対処する方法についていくつかの提案を見てきましIconv.convたが、私が試したことはうまくいかなかったようです。アプリケーション レベルでこれを解決するにはどうすればよいですか (すべてのテンプレートにパッチを適用する必要はありません)。ありがとう。

編集:いくつかのスタック トレース

ActionView::TemplateError (invalid byte sequence in UTF-8) on line #28 of app/views/users/_user.haml:
27:     - if user.valid?
28:       - image_onclick = remote_function( :url => { :action => :toggle_image, :id => user.id } )

    vendor/rails/activesupport/lib/active_support/core_ext/object/blank.rb:68:in `=~'
    vendor/rails/activesupport/lib/active_support/core_ext/object/blank.rb:68:in `!~'
    vendor/rails/activesupport/lib/active_support/core_ext/object/blank.rb:68:in `blank?'
    vendor/rails/activerecord/lib/active_record/validations.rb:478:in `block (2 levels) in validates_each'
    vendor/rails/activerecord/lib/active_record/validations.rb:476:in `each'
    vendor/rails/activerecord/lib/active_record/validations.rb:476:in `block in validates_each'
    ... etc

データベース テーブルCHARSETは でエンコードされUTF-8ます。テンプレートに特定のエンコーディングを割り当てませんでしたが、設定しました

Encoding.default_internal = 'utf-8'
Encoding.default_external = 'utf-8'

environment.rb

4

1 に答える 1

1

これは、私が使用していたMySQLアダプター(古いruby-mysqlgem)の問題のようです。にアップグレードしましたmysql2が、問題は解決したようです。

于 2012-02-15T06:02:34.000 に答える