2009-05-29 19 views
0

在我們的應用程序的網頁上,商標符號(TM)顯示爲問號。雖然註冊商標(R)有效。我們使用JSP標準庫中的c:out標籤顯示值。如果我把&交易;或者™在頁面上測試這些,那些顯示,因爲他們應該。JSP和商標符號

<td><c:out value="${item.description}"/></td> <!-- does not work --> 
<td>yada yada yada Spiros&trade; yada yada yada</td> <!-- works --> 

要添加到這一點,我們還使用YUI,和之前我們顯示這些頁面,他們在YUI的數據表作爲查詢的結果顯示(上一行用戶點擊進入上面描述的頁面)。 (TM)在該表中正確顯示。這告訴我,我們正在從我們的數據庫中正確地獲取值,並且生成要發回到YUI數據表的XML的服務器代碼也可以工作。

那麼爲什麼相同的字符串在YUI數據表中正確顯示,而不是在普通的JSP中,除非我們將符號硬編碼到頁面上?

+0

頁面使用什麼字符編碼? – 2009-05-29 23:30:28

回答

1

你可能有一個編碼問題。如果您在JSP中沒有顯式編碼:

<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> 

那麼是時候添加一個了。試試UTF-8,如果這不起作用,請嘗試ISO-8859-1 ...或者如果您知道正確的編碼,請使用它。

0

當一個字符顯示爲?在瀏覽器中(通常是Firefox),這意味着頁面編碼(因爲它被瀏覽器檢測到不會識別字符),一個好的測試是在Firefox中查看字符編碼 - > UTF-8。這意味着(tm)char使用UTF-8標準進行編碼,您必須指示您的頁面將響應編碼標頭設置爲UTF-8,這應該可以立即爲您工作

如果這樣做不起作用您應該首先了解如何對字符進行編碼(例如,查看從數據庫中讀取的編碼)並嘗試將頁面編碼標頭設置爲該編碼。

第二種格式可以工作,因爲(TM)字符是編碼爲瀏覽器解釋的已知html實體,無論頁面編碼如何。

+0

「使用unicode編碼」沒有這樣的東西。Unicode是一個字符集,而不是編碼。您似乎將Unicode和UTF-8混爲一談。 – 2009-05-30 00:35:42

+0

真:-)。被帶走了。編輯。 – 2010-05-27 20:50:56