Проблемы кодирования в файлах JavaScript с использованием конвейера ресурсов rails
Я использую рельсы 3.1 и конвейер ресурсов (ruby 1.9.2).
Я получаю следующую ошибку при попытке служить JavaScript js.erb
файл, содержащий строки в кодировке utf-8
invalid byte sequence in US-ASCII
Я поставил Encoding.default_external = "UTF-8"
в моем файле environment.rb. Как получить конвейер ресурсов для обслуживания с другой кодировкой?
РЕДАКТИРОВАТЬ
Ошибка появляется, только когда я генерирую символ utf-8 вне файла (в данном случае путем запроса из БД). Ошибка исчезнет, если я добавлю
<% "日" %>
в начало файла. Я предполагаю, что здесь происходит какое-то предположение о кодировании, но как мне избежать этого без этого хакерского решения?
1 ответ
При загрузке файла Ruby пытается "угадать" его кодировку. Если UTF-8 или какие-либо другие символы, отличные от ASCII, не найдены, он использует US-ASCII в качестве кодировки для файла и выдает ошибку, если внезапно обнаруживает не-ASCII-символ, который, например, загружается во время выполнения.
Лучшее решение этой проблемы - заставить Ruby использовать определенную кодировку, добавив # encoding: utf-8
как первая строка файла.rb или <%# encoding: utf-8 %>
если это файл.erb.