2012-05-14 77 views
2

我試圖在我的Rails視圖中包含一個度符號。如果我將度數符號(°)直接放入.html.erb文件,它將以正常方式由瀏覽器顯示。Rails視圖中的Unicode符號

但是這個符號應該被轉移到通過字符串查看。在這裏,問題就開始了。

如果我把這個:

<%= 176.chr %> 

進入視野,或者把

.... + 176.chr 

到紅寶石源,我得到

incompatible character encodings: UTF-8 and ASCII-8BIT 

如何讓Rails的識別所有意見UTF -8默認?

+0

非utf-8的東西不是你的看法,它是176.chr,默認爲大於127的ASCII-8BIT。單個字節176不是有效的utf-8字符 –

回答

3

您可以在HTML中使用此符號的特殊替換:&deg;

http://www.w3schools.com/charsets/ref_html_entities_4.asp

你必須把它在HTML中,<%=%之外>。或使用原輔助器。或者將其標記爲html_safe。順便說一句,你是否嘗試在你的代碼中提供編碼?像176.chr(__ENCODING__)__ENCODING__這裏不是佔位符,它是Ruby的東西)或176.chr(Encoding :: UTF_8)。所有這些方法都應該有效。

+0

如果我們正在討論將符號插入到HTML源代碼中,那麼您的回答是正確的。但是我們正在討論從Ruby字符串中獲取這個字符並將其放入視圖的輸出中。 – Paul

+0

記住,閱讀和維護類似於他們的代碼的符號要容易得多。考慮這個建議。即使你已經解決了你的問題,使用實體代替代碼。 – jdoe

+0

好吧,看起來'°'.html_safe會訣竅,但我希望將來能夠插入任意charcode的字符。 – Paul

2

這應該已經在您的application.rb裏面指定/config/

相關的部分應該是這樣的:

module App 
    class Application < Rails::Application 
    # Configure the default encoding used in templates for Ruby 1.9.                                  
    config.encoding = "utf-8"  
    end 
end 

我覺得這裏的問題是,你正在生成應插入UTF-8體內的ASCII-8BIT字符。

如果你想使用UTF-8字符串在Ruby代碼,你必須把這個神奇的字符串轉換成你的ruby文件的第一行:在Ruby 1.9的編碼

# encoding: UTF-8 

詳情可參閱here

+0

config.encoding =「utf-8」已經存在,#編碼:UTF-8不起作用。 – Paul