3

我有,当我尝试运行rake assets:precompile是得到一个奇怪的错误一个Rails应用程序。它看起来像这样:字符编码错误时运行耙资产:预编译

rake aborted! 
Invalid US-ASCII character "\xE2" 
    (in /Users/lee/Code/draper/app/assets/stylesheets/application.css.scss) 
(sass):9 

我不知道无效字符可能滑入我的代码的位置。我正在使用Twitter Bootstrap(boostrap-sass gem),我的bootstrap_and_overrides.css.scss文件似乎是罪魁祸首。我已经尝试在文本队友中从头开始重新创建该文件,以获得任何奇怪的字符,并且不起作用。这似乎工作是加入这个给我bootstrap_and_overrides.css.scss顶部的唯一的事:

@charset "UTF-8"; 

,让我跑耙资产:预编译,然后部署到Heroku的,但是,似乎是一个黑客和肮脏的修复。我可以将其他应用程序部署到使用bootstrap-sass的Heroku,并且Heroku能够运行rake资源:部署时的预编译。目前唯一的解决方法是在部署到Heroku之前包含@charset "UTF-8";,然后在本地运行rake assets:precompile,以便在部署期间跳过该步骤。

我不知道我在哪里出错了。

回答

5

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

使用@charset声明不是破解,但如果您不需要使用UTF-8字符,则最好将其删除。

+0

这确实是个问题。这是我发现的第一个提到\ xE2可能与双引号有关的地方。这个提示让我发现了这个问题,这确实是一个倾斜的双引号引起了所有问题。一旦我删除了,我也可以删除@charset声明,一切正常。非常感谢! –

+0

如果'\ xe2'是一个引号,那么这个文件甚至不是UTF-8。 – Esailija

+0

Upvoting只是因为寻找有趣的双引号可以让我头疼几个小时后头疼得多了几个小时。我的rake db:migrate出错了。谢谢,马克! –

2

声明为您的文件正确的编码,不是黑客攻击,一个文本文件,总是需要声明的编码和物理编码。不管怎么说,你可以只删除所有非ASCII字符的iconv上的文件:

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

最后的文件将与几乎所有的编码工作。

+0

我想我认为这是一个黑客必须在我的CSS文件中声明它,因为Rails使用config.encoding =“utf-8”' –

+0

@LeeMcAlilly设置config/application.rb中的编码,iconv为你工作? – Esailija

+0

是的,这是清理文件的有效方法。我之前试图用手做,并没有找到造成问题的角色。 –