2013-03-17 43 views
0

我最近發現了在文本中插入英文字符時出現的問題,它在FireFox中顯示爲「£」,但是當我在IE9中渲染網頁時,它顯示爲「A£」,其口音超過了A?爲什麼英鎊在IE9中顯示爲A£而不是在FireFox中?

我有問題的具體實例是:

<%= link_to "£150-£300", :controller => params[:controller], :action => params[:action], :min_price => 150, :max_price => 300 %> 

這些£跡象前綴在IE9中的「A」的兩個。我試圖在其他link_to命令中插入字符,並獲得相同的行爲,所以它不是特定於此行的。

我也剛剛檢查並發現,如果我在網站上的任何位置將符號輸入純文本,我會遇到同樣的問題。

有沒有人有過去類似的問題/知道補救措施?

在此先感謝

+0

對於非ASCII字符,您可以使用[HTML實體](http://www.w3schools.com/tags/ref_entities.asp)避免編碼問題。例如,您可以將英鎊符號編碼爲'£'。 – DaoWen 2013-03-17 19:32:38

+0

非常感謝 - 這可能非常有用! – Texas 2013-03-17 20:02:08

回答

3

£是UTF-8編碼£在Windows 1252/ISO-8859-1誤解。這意味着服務器發送的物理字節以UTF-8編碼,但瀏覽器不使用UTF-8對它們進行解碼。以下是使瀏覽器以UTF-8解釋它們的提示。

您需要正確的Content-Type標頭或至少在html中聲明它。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 

請注意,如果您的服務器使用charset發送正確的HTTP Content-Type標頭,則會考慮通過html標籤。

我不知道Rails的,但這應該建立真正的HTTP標頭:

response.headers['Content-Type'] = "text/html; charset=utf-8" 

它也可能是你已經明確地在IE中設置的字符編碼到Windows 1252,然後這將使IE忽略來自服務器的聲明。

+0

非常感謝您的建議 - 這和通過IE啓用Intranet設置的組合似乎可行...... – Texas 2013-03-17 16:32:38

相關問題