ruby-on-rails - 使用 Rails Assets 管道在 JavaScript 文件中编码问题

标签 ruby-on-rails ruby ruby-on-rails-3.1 asset-pipeline

我正在使用 Rails 3.1 和 Assets 管道 (ruby 1.9.2)。

在尝试提供具有 utf-8 编码字符串的 javascript js.erb 文件时出现以下错误

invalid byte sequence in US-ASCII

我在我的 environment.rb 文件中设置了 Encoding.default_external = "UTF-8"。我如何让 Assets 管道以不同的编码提供服务?

编辑

仅当我在文件外部生成 utf-8 字符时才会出现该错误(在本例中是通过从数据库查询)。如果我添加

,错误就会消失
<% "日" %>

到文件的顶部。我猜这里会进行某种编码猜测,但如果没有那种骇人听闻的解决方案,我该如何避免呢?

最佳答案

加载文件时,Ruby 会尝试“猜测”它的编码。如果未找到 UTF-8 或任何其他非 ASCII 字符,它将使用 US-ASCII 作为文件编码,并在突然遇到非 ASCII 字符时抛出错误,例如在运行时加载。

这个问题最好的解决方案是通过添加强制Ruby使用某种编码 # encoding: utf-8作为 .rb 文件的第一行或 <%# encoding: utf-8 %>如果是 .erb 文件。

关于ruby-on-rails - 使用 Rails Assets 管道在 JavaScript 文件中编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7761540/

相关文章:

ruby-on-rails - 这是重构 ActiveRecord 胖模型的正确方法吗?

ruby-on-rails - Rails 教程 : RSpec test decoupling

ruby - 使用 Ruby 处理抽象类解决方案的正确方法是什么?

ruby-on-rails - 在 Mac OS X 上完全重新安装 Ruby Rails 和 Gem

arrays - 数组中先前元素的总和

ruby-on-rails - 在任何来源中都找不到 rake-0.9.2.2

ruby-on-rails - sunspot solr如何正确搜索多个模型?在线所有示例均失败

javascript - Bootstrap Datepicker 在 Ruby-on-Rails 中的位置和行为

ruby-on-rails - 在 Ruby on Rails 中查找两个日期之间的月数

facebook-graph-api - 来自 devise+omniauth-facebook 身份验证的访问 token ,用于在 fb-graph 中使用