Ruby on rails 运行rake资源时出现字符编码错误:预编译

Ruby on rails 运行rake资源时出现字符编码错误:预编译,ruby-on-rails,twitter-bootstrap,character-encoding,sass,asset-pipeline,Ruby On Rails,Twitter Bootstrap,Character Encoding,Sass,Asset Pipeline,我有一个rails应用程序,当我试图运行rakeassets:precompile时,它出现了一个奇怪的错误。看起来是这样的: rake aborted! Invalid US-ASCII character "\xE2" (in /Users/lee/Code/draper/app/assets/stylesheets/application.css.scss) (sass):9 我不确定我的代码中是否有无效字符。我正在使用Twitter引导(boostrap sass gem),而我的

我有一个rails应用程序,当我试图运行
rakeassets:precompile
时,它出现了一个奇怪的错误。看起来是这样的:

rake aborted!
Invalid US-ASCII character "\xE2"
  (in /Users/lee/Code/draper/app/assets/stylesheets/application.css.scss)
(sass):9
我不确定我的代码中是否有无效字符。我正在使用Twitter引导(boostrap sass gem),而我的
Bootstrap_和_overrides.css.scss
文件似乎是罪魁祸首。我已经尝试过在text mate中从头开始重新创建这个文件,以删除任何奇怪的字符,但没有成功。唯一有效的方法是将其添加到我的
bootstrap\u和\u overrides.css.scss的顶部:

@charset "UTF-8";
这使我能够运行rake资产:预编译,然后部署到Heroku,但这似乎是一个黑客和肮脏的修复。我可以向Heroku部署使用引导sass的其他应用程序,Heroku可以在部署时运行rake资产:precompile。现在唯一能绕过它的方法就是加入
@charset“UTF-8”
然后在部署到Heroku之前在本地运行
rake assets:precompile
,以便在部署期间跳过该步骤


我不知道我在这件事上哪里出错了

检查您的CSS文件。字符
\xE2
通常与不属于ASCII字符集的双引号字符相关。在编辑器中,它们通常看起来更像是倾斜的双引号<代码>“mystring”
vs
“mystring”


使用
@charset
声明不是一种黑客行为,但是如果您不需要使用UTF-8字符,您最好删除它。

为文件声明正确的编码不是黑客行为,文本文件总是需要声明的编码和物理编码。无论如何,您可以删除文件中带有iconv的所有非ascii字符:

iconv -t ASCII//IGNORE -f UTF8 < application.css.scss > application.css.scss.ascii
iconv-tscii//IGNORE-f UTF8application.css.scss.ASCII

然后生成的文件将与几乎任何编码一起工作。

我想我认为必须在css文件中声明它是一种黑客行为,因为Rails在config/application.rb中使用
config.encoding=“utf-8”设置编码。
是的,这是清理文件的一种有用方法。我以前试着用手去做,但没有发现造成问题的角色。这确实是问题所在。这是我第一次发现提到的\xE2可能与双引号有关。这一暗示让我找到了问题所在,事实上,所有问题都是由一个倾斜的双引号引起的。一旦我删除了它,我就能够删除@charset声明,一切正常。非常感谢!如果
\xe2
是一个引号,那么这个文件甚至不是UTF-8。升级投票仅仅是因为搜索有趣的双引号让我省去了数小时的额外麻烦。我的在rake db:migrate上出错了。谢谢你,马克!