JSP和商标符号

问题描述:

在我们的应用程序的网页上,商标符号(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

你可能有一个编码问题。如果您在JSP中没有显式编码:

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

那么是时候添加一个了。试试UTF-8,如果这不起作用,请尝试ISO-8859-1 ...或者如果您知道正确的编码,请使用它。

当一个字符显示为?在浏览器中(通常是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