Подтвердить что ты не робот

Проблемы с кодированием в файлах javascript с использованием конвейера ресурсов rails

Я использую 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 за пределами файла (в этом случае путем запроса из БД). Ошибка уходит, если я добавлю

<% "日" %>

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

4b9b3361

Ответ 1

При загрузке файла Ruby пытается "угадать" его кодировку. Если не найдены UTF-8 или любые другие символы, отличные от ASCII, он использует US-ASCII в качестве кодировки для файла и выдает ошибку, если он неожиданно встречает символ, отличный от ASCII, который, например, загружается во время выполнения.

Лучшее решение этой проблемы - заставить Ruby использовать определенную кодировку, добавив # encoding: utf-8 в качестве первой строки файла .rb или <%# encoding: utf-8 %>, если это файл .erb.