ActionView::Template::Error (incompatible character encodings: UTF-8 and ASCII-8BIT)

1,066 views
Skip to first unread message

Алексей Данченков

unread,
May 8, 2011, 3:29:48 PM5/8/11
to RubyOnRails
Всем привет!

Переношу приложение с ruby-1.8 на ruby-1.9, столкнулся с необходимостью выноса всего текста на русском из контроллеров и моделей в файл локализации (что, видимо, есть хорошо). Но ошибка продолжает появляться, не только для русского текста во шаблонах (view), но и при выводе данных из модели.

Соответственно, вопросы:
1. Необходимо ли выносить все UTF-8 символы из view или это просто правило хорошего тона?
2. Как избежать появления ошибки несовместимости кодировок при выводе? (MySQL отдаёт данные в UTF-8)

production.log
ActionView::Template::Error (incompatible character encodings: UTF-8 and ASCII-8BIT):
    11:     <th class="names_head_l"><%= t('basics.index.materials') %></th>
    12:     <th class="names_head_l"><%= t('basics.index.comment') %></th>
    13: </tr>
    14: <%= render :partial => 'name', :collection => @names %>
  app/views/names/index.html.erb:14:in `_app_views_names_index_html_erb__164834295__580114718_801953516'

environment.rb
  I18n::locale = :ru
  I18n.default_locale = :ru
  Encoding.default_external = Encoding::UTF_8
  Encoding.default_internal = Encoding::UTF_8

application.rb
  config.i18n.default_locale = :ru
  config.encoding = "utf-8"

database.yml
  development:
    adapter: mysql
    encoding: utf8

Алексей

a.ognevsky

unread,
May 8, 2011, 3:31:19 PM5/8/11
to ror...@googlegroups.com
В файлах, которые отдают русский текст, вверху написать:
# encoding: utf-8

(и это почти легко искалось в поиске даже по группе)

--
Andrey Ognevsky

--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ
 
Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror...@googlegroups.com
Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-un...@googlegroups.com
Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru

Nikita Levchuk

unread,
May 8, 2011, 3:49:43 PM5/8/11
to ror...@googlegroups.com
У меня появляется такая же ошибка (incompatible character encodings: UTF-8 and ASCII-8BIT) в браузере, когда я хочу вывести на страничку данные из БД. И почти волшебная фраза: # encoding: utf-8, не помогает. У меня она вписана и в модели и в контроллере. В интернете все только вставку этой строчки предлагают, или некоторые - заюзать ruby-mysql. Может кто сталкивался и решил подобную траблу. У меня ruby - 1.9.2, rails -3.0.7

Akzhan Abdulin

unread,
May 8, 2011, 4:12:03 PM5/8/11
to ror...@googlegroups.com
Если у вас erb, то и во view тоже.
Если haml, то настраивать Haml::Template.

8 мая 2011 г. 23:49 пользователь Nikita Levchuk <nikita...@gmail.com> написал:
У меня появляется такая же ошибка (incompatible character encodings: UTF-8 and ASCII-8BIT) в браузере, когда я хочу вывести на страничку данные из БД. И почти волшебная фраза: # encoding: utf-8, не помогает. У меня она вписана и в модели и в контроллере. В интернете все только вставку этой строчки предлагают, или некоторые - заюзать ruby-mysql. Может кто сталкивался и решил подобную траблу. У меня ruby - 1.9.2, rails -3.0.7

Никита Левчук

unread,
May 8, 2011, 4:49:58 PM5/8/11
to ror...@googlegroups.com
и во view тоже прописывал. Безрезультатно

Nikita Levchuk

unread,
May 8, 2011, 4:53:13 PM5/8/11
to ror...@googlegroups.com
у меня в ругается вот на эту строчку в layout - <%= yield :layout %>

Алексей Данченков

unread,
May 8, 2011, 5:31:48 PM5/8/11
to ror...@googlegroups.com
Андрей, спасибо, решение это раньше видел, но не сообразил, что и во view нужно тоже - комментарии становились частью вывода.
Да и приходится по всему проекту расставлять. Искал другое решение, вроде общей настройки для установки вывода по всему проекту в utf-8.
Было бы логично, вроде - большинство данных из форм в utf-8 всегда.
А вы все тексты из view выносите в ru.yml?

8 мая 2011 г. 23:31 пользователь a.ognevsky <a.ogn...@gmail.com> написал:

Eugene Korbut

unread,
May 9, 2011, 2:50:21 AM5/9/11
to ror...@googlegroups.com
2011/5/9 Nikita Levchuk <nikita...@gmail.com>:

Попробуй в Gemfile прописать gem 'mysql2' и в database.yml поставить
adapter: mysql2

--
Eugene Korbut

Зануда

unread,
May 9, 2011, 2:53:55 AM5/9/11
to RubyOnRails to russian
Пропишите в загрузчик такое:

if RUBY_VERSION >= '1.9'
Encoding.default_external = 'UTF-8'
Encoding.default_internal = 'UTF-8'
end

Помогает, но не везде, т.к. некоторые обхекты всё ещё создаются почему-
то в US_ASCII...

Eugene Korbut

unread,
May 9, 2011, 2:59:59 AM5/9/11
to ror...@googlegroups.com
2011/5/9 Алексей Данченков <adanc...@gmail.com>:

> Андрей, спасибо, решение это раньше видел, но не сообразил, что и во view
> нужно тоже - комментарии становились частью вывода.
> Да и приходится по всему проекту расставлять. Искал другое решение, вроде
> общей настройки для установки вывода по всему проекту в utf-8.
> Было бы логично, вроде - большинство данных из форм в utf-8 всегда.

btw, есть такой гем - magic_encoding. Прописывает всем *.rb файлам в
проекте магический комментарий.

> А вы все тексты из view выносите в ru.yml?

Я - нет. Выносить все тексты из views в locales в одноязычном проекте
- имхо лишная трата времени и сил.

--
Eugene Korbut

pyromaniac -

unread,
May 9, 2011, 3:01:57 AM5/9/11
to ror...@googlegroups.com
Ну и традиционно я влезу - https://rails.lighthouseapp.com/projects/8994/tickets/2476-ascii-8bit-encoding-of-query-results-in-rails-232-and-ruby-191#ticket-2476-22

9 мая 2011 г. 10:59 пользователь Eugene Korbut <vlm...@gmail.com> написал:

Никита Левчук

unread,
May 9, 2011, 11:20:13 AM5/9/11
to ror...@googlegroups.com
РЕШЕНО! Всем спасибо за помощь.

sleepwalker

unread,
Jul 2, 2011, 1:41:09 AM7/2/11
to RubyOnRails to russian
Опишите, пожалуйста, как в итоге решили. У меня аналогичная проблема.

On May 9, 7:20 pm, Никита Левчук <nikitalevc...@gmail.com> wrote:
> РЕШЕНО! Всем спасибо за помощь.

Vadim Zharko

unread,
Jul 2, 2011, 12:58:30 PM7/2/11
to ror...@googlegroups.com
может)
# -*- coding: utf-8 -*-

2 июля 2011 г. 9:41 пользователь sleepwalker <krivich....@gmail.com> написал:
Опишите, пожалуйста, как в итоге решили. У меня аналогичная проблема.

On May 9, 7:20 pm, Никита Левчук <nikitalevc...@gmail.com> wrote:
> РЕШЕНО! Всем спасибо за помощь.

--
--
Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы "RubyOnRails to russian" на группах Google.
FAQ группы находится по адресу: http://ru.wikibooks.org/wiki/RubyFAQ

 Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
ror...@googlegroups.com
 Чтобы отменить подписку на эту группу, отправьте сообщение по адресу: ror2ru-un...@googlegroups.com
 Дополнительные варианты находятся на странице группы http://groups.google.com/group/ror2ru?hl=ru



--
Best regards, Vadim Zharko.
icq:     646334553

Alex Mercer

unread,
Jul 2, 2011, 1:20:05 PM7/2/11
to RubyOnRails to russian
была такая же проблема в связке ruby 1.9.2 и rails 2.3.5...
после смены 1.9.2 на 1.8.7 проблема исчезла...

On 2 июл, 19:58, Vadim Zharko <vzha...@gmail.com> wrote:
> может)
> # -*- coding: utf-8 -*-
>
> 2 июля 2011 г. 9:41 пользователь sleepwalker

> <krivich.ekater...@gmail.com>написал:


>
>
>
>
>
>
>
>
>
> > Опишите, пожалуйста, как в итоге решили. У меня аналогичная проблема.
>
> > On May 9, 7:20 pm, Никита Левчук <nikitalevc...@gmail.com> wrote:
> > > РЕШЕНО! Всем спасибо за помощь.
>
> > --
> > --
> > Данное сообщение отправлено Вам, так как Вы являетесь подписчиком группы
> > "RubyOnRails to russian" на группах Google.
> > FAQ группы находится по адресу:http://ru.wikibooks.org/wiki/RubyFAQ
>
> >  Для того, чтобы отправить сообщение в эту группу, пошлите его по адресу
> > ror...@googlegroups.com
> >  Чтобы отменить подписку на эту группу, отправьте сообщение по адресу:
> > ror2ru-un...@googlegroups.com
> >  Дополнительные варианты находятся на странице группы
> >http://groups.google.com/group/ror2ru?hl=ru
>
> --

> *Best regards, Vadim Zharko.*
> icq:     646334553

Андрей Хоффманн

unread,
Jul 3, 2011, 2:12:44 AM7/3/11
to RubyOnRails to russian
мне лично помогло:
gem 'ruby-mysql' в Gemfile

Лев Черемухин

unread,
Jul 3, 2011, 6:50:10 AM7/3/11
to RubyOnRails to russian
у меня стоял кроппер, он после апдейта объекта выводил пару рисунков,
и вот, если имя загруженного файла содержало русские символы выводил
эту ошибку... ну и при выводе данных из сфинкса так-же. короче,
применил к строкам mb_chars - заработало... всё же надо потребовать
чтоб сделали один конфиг кодировки в одном месте, и чтоб работало из
коробки

On 3 июл, 12:12, Андрей Хоффманн <hoffmann.and...@rocketmind.ru>
wrote:

Reply all
Reply to author
Forward
0 new messages