外部 gem 的资产管道编码问题(UTF-8 与 ASCII-8BIT)

2023-11-24

我正在尝试创建一个包装 d3.js 的 gem,源代码可以在https://github.com/iblue/d3-rails

所以当我将这个 gem 包含在我的 Gemfile 中时

gem "d3-rails", :git => "git://github.com/iblue/d3-rails.git"

当我在 application.js 中包含 javascript 时:

//=require d3

然后我的资产编译失败,我编译的 application.js 只包含

throw Error("Encoding::CompatibilityError: incompatible character encodings: UTF-8 and ASCII-8BIT")

我正在使用 Rails 3.1.3 和 ruby​​-1.9.3-p125。 jQuery 使用完全相同的 gem 结构并且它可以工作。我究竟做错了什么?

EDIT:

我也看到了这个问题:Ruby 1.9 抛出 javascript 编码错误。这不适用于此处,我的文件是有效的 UTF-8:

ruby-1.9.3-p125 :001 > d = File.read("./d3.js")
 => [...]
ruby-1.9.3-p125 :002 > d.encoding
 => #<Encoding:UTF-8> 
ruby-1.9.3-p125 :003 > d.valid_encoding?
 => true 

EDIT 2:

我还尝试在我的中插入一些巫术config/environment.rb。这是行不通的:

# -*- encoding : utf-8 -*-
# Load the rails application
require File.expand_path('../application', __FILE__)

# --------- VOODOO BEGINS HERE -----------------
Encoding.default_external = Encoding::UTF_8
Encoding.default_internal = Encoding::UTF_8
# --------- END VOODO --------------------------

# Initialize the rails application
Ratecode::Application.initialize!

该错误是来自 WEBrick 服务器还是其他原因?做rake assets:precompile工作? (之后别忘了清理资产)

如果后者失败,请仔细检查 $LANG 环境变量的值是否为 UTF-8(带有env)。如果 rake 任务有效但应用程序失败,则可能是服务器环境变量的问题。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

外部 gem 的资产管道编码问题(UTF-8 与 ASCII-8BIT) 的相关文章

随机推荐