在我们的应用程序的网页上,商标符号(TM)显示为问号。但是,注册商标(R)有效。我们使用JSP标准库中的c:out标记显示值。如果我放& trade;或™在页面上进行测试,这些显示为他们应该的。
<td><c:out value="${item.description}"/></td> <!-- does not work -->
<td>yada yada yada Spiros™ yada yada yada</td> <!-- works -->
除此之外,我们还使用YUI,在显示这些页面之前,它们在YUI数据表中显示为查询结果(用户点击一行进入上述页面)。 (TM)在该表中正确显示。这告诉我,我们正在从数据库中正确获取值,并且生成XML以发送回YUI数据表的服务器代码也可以工作。
那么为什么在YUI数据表中正确显示相同的String,而不是普通的JSP,除非我们将符号硬编码到页面上?
答案 0 :(得分:1)
您可能遇到编码问题。如果您的JSP中没有明确的编码:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
然后是时候添加一个了。尝试使用UTF-8,如果不起作用,请尝试使用ISO-8859-1 ......或者如果您知道正确的编码,请使用它。
答案 1 :(得分:0)
当char出现时?在浏览器(通常是Firefox)中,这意味着页面编码(因为浏览器检测到它将无法识别字符。一个好的测试是在Firefox中查看 - &gt;字符编码 - > UTF-8。如果出现字符正确然后它意味着(tm)字符使用UTF-8标准编码。您必须指示您的页面将响应编码标头设置为UTF-8。这应该适合您。
如果这不起作用,您应首先了解字符是如何编码的(例如,查看从数据库中读取的编码)并尝试将页面编码标头设置为该编码。
第二种格式有效,因为(TM)char被编码为已知的html实体,无论页面编码如何,浏览器都会解释该实体。