У меня есть приложение, которое позволяет пользователям вводить строку, обрабатывать ее, хранить в базе данных в исторических целях и возвращать некоторые сообщения.Rails 4: несовместимые кодировки символов: UTF-8 и ASCII-8BIT
В контроллере, это то, как я строю сообщения
@messages << name + " was not created"
По мнению, это линия, что это сбой на
<% @messages.each do |msg| %>
<li> <b><%= msg %></b></li> <--- this line
<% end %>
Выполнение поиска по этому вопросу привели несколько решения и объяснения причин возникновения проблемы. Я правильно обрабатываю кодировку в нескольких местах:
- Мое приложение по умолчанию преобразует вещи в UTF8.
- Когда я набираю в китайских иероглифах и оказываю конкретный маркер в контроллере, он показывает, что я напечатал.
- Когда я вынести сцепленную строку выше, показывает правильную строку
- баз данных устанавливаются в UTF-8 кодирование
- Другие страницы способны правильно отображать текст (они выборки из базы данных и отобразить его непосредственно, без каких-либо манипуляций со строками с моей стороны)
проблема исчезает, когда я закомментировать " эта строка "в представлении, но я не понимаю, что не так с Это.
Если я пишу это, следуя другое предложение, он работает
<li> <b><%= msg.force_encoding("utf-8") %></b></li>
Но мне не нравится это, потому что я не должен быть с «заставить» любые кодировки, когда в идеале все, что происходит в должно быть UTF-8 или правильно преобразован в UTF-8, и представления могут считать, что все, что они представляют, являются правильными UTF-8.
Я подозреваю, что проблема в том, как я конкатенации строки:
@messages << name + " was not created"
Если я кодировку силы, как этот
@messages.size.times do |i|
@messages[i] = @messages[i].force_encoding("UTF-8")
end
Это также работает.
Каков подходящий способ контингации строк?
ваш взгляд файл кодировки в UTF-8? – medBo
Вы имеете в виду кодировку файла? Да, это UTF-8, но я не уверен, почему это изменило бы ситуацию. – MxyL
Эта статья может помочь вам: http: // yehudakatz.com/2010/05/05/ruby-1-9-encodings-a-primer-and-the-solution-for-rails /, честно говоря, я его не читаю, но, похоже, у него отличные вещи о кодировании:), если вы найдете что-то полезное, скажите мне – medBo