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

是的,這是清理文件的有效方法。我之前試圖用手做,並沒有找到造成問題的角色。 –