Проблемы кодирования в файлах JavaScript с использованием конвейера ресурсов rails - PullRequest
11 голосов
/ 14 октября 2011

Я использую rails 3.1 и конвейер ресурсов (ruby 1.9.2).

При попытке обработать файл javascript js.erb, содержащий строки в кодировке utf-8 * 1004, я получаю следующую ошибку*

invalid byte sequence in US-ASCII

Я установил Encoding.default_external = "UTF-8" в моем файле environment.rb.Как получить конвейер ресурсов для обслуживания с другой кодировкой?

EDIT

Ошибка появляется, только когда я генерирую символ utf-8 внефайл (в этом случае путем запроса из БД).Ошибка исчезнет, ​​если я добавлю

<% "日" %>

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

1 Ответ

20 голосов
/ 28 октября 2011

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

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

...