2012-02-24 44 views
0

我剛開始使用新的Rails應用程序,使用明亮閃亮的新版Rails 3.2.1。以前,我只使用3.0.9版本。在描述我的錯誤之前,讓我們知道在Windows 7 32位上使用Ruby版本ruby 1.9.2p290 (2011-07-09) [i386-mingw32]。我最近沒有更改過我的Ruby版本。我正在使用Notepad ++ v5.9.3,並沒有(有意)更改了任何默認設置。爲什麼Rails 3對UTF-8字符編碼有一個合適的描述?

當我跑我的新應用程序的第一次,我得到了一個奇怪的消息:

ActionView::WrongEncodingError in Index#index 

Your template was not saved as valid UTF-8. Please either specify UTF-8 as the encoding for your template in your text editor, or mark the template with its encoding by inserting the following as the first line of the template: 

# encoding: <name of correct encoding>. 

我不明白爲什麼我收到此錯誤突然。它是Rails 3.2.1所做更改的一部分嗎?通過進入Notepad ++並使用編碼菜單選項「轉換爲UTF-8」可以很容易地修復它,但是,就像我說過的,我以前從來沒有這樣做過。

另一個奇怪的是即使是Rails生成的文件也是在我使用生成器時使用ANSI編碼生成的。總的來說,我很困惑,我想確保我使用的是良好的編程實踐。

回答

2

它是Rails 3.2.1所做的更改的一部分嗎?通過進入Notepad ++並使用編碼菜單選項「轉換爲UTF-8」可以很容易地修復它,但是,就像我說過的,我以前從來沒有這樣做過。

是的。 Rails 3.0+(我認爲)需要以UTF-8編碼保存所有模板。您需要將文件保存爲UTF-8。如果仍然不能正常工作,明確將您.rb的第一行設置編碼文件的以下:

# encoding: utf-8 

一下添加到您的.erb模板的第一行:

<%# encoding: utf-8 %> 

this related questionthis similar problem。聽起來像你編輯器的編碼設置自從你最初創建文件後發生了變化。

另一個奇怪的事情是,即使是Rails生成的文件也是在使用生成器時使用ANSI編碼生成的。總的來說,我很困惑,我想確保我使用的是良好的編程實踐。

這是很奇怪的,我不知道我有一個良好的建議,其他然後嘗試添加Encoding.default_external = "UTF-8"config.ruconfig/environment.rb文件。

-1

我曾嘗試encoding: utf-8方法沒有運氣,但我解決了這個問題,當我改變編碼使用記事本++。謝謝!