неверная ошибка последовательности байтов utf-8 в рельсах 2.3 и ruby ​​1.9 - PullRequest
0 голосов
/ 12 февраля 2012

Я перенес свое приложение из 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

1 Ответ

1 голос
/ 15 февраля 2012

Похоже, что это проблема с адаптером MySQL, который я использовал - старый ruby-mysql гем.Я обновился до mysql2, и это, похоже, решило проблему.

...