Java JSP与商标符号
在我们应用程序的网页上,商标符号(TM)显示为问号。不过,注册商标(R)仍然有效。我们使用JSP标准库中的c:out标记显示该值。如果我把&交易;或™;在测试这一点的页面上,它们按预期显示Java JSP与商标符号,java,jsp,symbols,Java,Jsp,Symbols,在我们应用程序的网页上,商标符号(TM)显示为问号。不过,注册商标(R)仍然有效。我们使用JSP标准库中的c:out标记显示该值。如果我把&交易;或™;在测试这一点的页面上,它们按预期显示 <td><c:out value="${item.description}"/></td> <!-- does not work --> <td>yada yada yada Spiros™ yada yada yada
<td><c:out value="${item.description}"/></td> <!-- does not work -->
<td>yada yada yada Spiros™ yada yada yada</td> <!-- works -->
雅达雅达雅达斯皮罗斯贸易有限公司;雅达雅达雅达
此外,我们还使用了YUI,在显示这些页面之前,它们会作为查询结果显示在YUI数据表中(用户单击一行转到上述页面)。(TM)正确地显示在该表中。这告诉我,我们正在正确地从数据库中获取值,并且生成要发送回YUI数据表的XML的服务器代码也可以正常工作
那么,为什么相同的字符串会正确地显示在YUI数据表中,而不是在普通JSP中,除非我们将符号硬编码到页面上?当字符显示为时?在浏览器(通常是Firefox)中,这意味着页面编码(由浏览器检测到)将无法识别字符。一个好的测试是在Firefox中查看->字符编码->UTF-8。如果字符显示正确,则表示(tm)字符是使用UTF-8标准编码的。您必须指示您的页面将响应编码头设置为UTF-8。这对您来说应该马上就可以了 如果这不起作用,您应该首先了解字符是如何编码的(例如,查看从数据库读取的编码),并尝试将页面编码头设置为该编码
第二种格式之所以有效,是因为(TM)字符被编码为已知的html实体,浏览器会对其进行解释,而不考虑页面编码。您可能有编码问题。如果JSP中没有显式编码:
<%@ page contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %>
然后是添加一个的时候了。试试UTF-8,如果不起作用,试试ISO-8859-1……或者如果你知道正确的编码,就用它。页面使用什么字符编码?没有“使用unicode编码”这样的东西unicode是一个字符集,而不是编码。你似乎把unicode和UTF-8混为一谈了。真的:-)。我被迷住了。编辑。