Проблемы с кодировкой в ​​рельсах на ruby ​​1.9.1 - PullRequest
9 голосов
/ 28 августа 2009

Я использую рельсы 2.3.3 и ruby ​​1.9.1.

Я пытаюсь сделать вид, который включает в себя частичное. В частичном я вывести поле модели, которое закодировано в UTF8. Это не с

ActionView::TemplateError (incompatible character encodings: ASCII-8BIT and UTF-8) on line #248 of app/views/movie/show.html.erb:
245:    <!-- Coloumn right | start -->
246:    <div class="col_right">
247: 
248:        <%= render :partial => 'movie_stats' %>
249: 
250:        <!-- uploaders -->
251:        <div class="box_white">     

С другой стороны, я могу вывести поле с содержимым utf8, если я непосредственно использую это поле в представлении (если оно не в части).

Как я могу это исправить? Я уже пытался установить кодировку по умолчанию, но, похоже, это не сработало.

Ответы [ 3 ]

9 голосов
/ 06 декабря 2009

У меня тоже было это, так что я думаю, что стоит иметь правильный ответ.

Gem MySql 2.8.1 не является дружественным по отношению к utf-8, поэтому иногда он возвращает строки UTF и врет Rails, сообщая, что они являются ASCII, хотя на самом деле это UTF-8. Это заставляет вещи взрываться.

Итак: вы можете либо обезьяньим патчем, либо получить совместимый гем MySql. Смотри: http://gnuu.org/2009/11/06/ruby19-rails-mysql-utf8/

2 голосов
/ 28 августа 2009

Кажется, есть проблема с кодировкой ERB в Ruby 1.9. Больше информации в этом билете Lighthouse . Был включен патч с обходным решением , возможно, он у вас работает?

Проблема в коде erb в дистрибутиве ruby ​​1.9. Когда он компилирует код шаблона, он вызывает кодировку «ASCII-8bit», проблема заключается в том, что, когда код шаблона имеет многобайтовые символы, код шаблона возвращается в строке «ASCII-8bit», и когда эта строка совпадает с «UTF8» Для строки с многобайтовым символом возникает исключение, поскольку строки между этими кодировками совместимы только тогда, когда оба имеют только семибитные символы.

0 голосов
/ 15 мая 2013

Кажется, что между Ruby 1.9x и гемом mysql существует несовместимость в отношении того, как строки передаются взад и вперед (в частности, кодирование строк).

Чтобы исправить, запустите

gem install mysql2 

на сервере и обновите файл конфигурации базы данных, чтобы использовать этот гем вместо предыдущего.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...