0

在我们应用程序的网页上,商标符号 (TM) 显示为问号。不过,注册商标 (R) 有效。我们在 JSP 标准库中使用 c:out 标记显示该值。如果我把 ™ 或 ™ 在页面上测试这一点,那些显示为他们应该的。

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

除此之外,我们还使用 YUI,在显示这些页面之前,它们会作为查询结果显示在 YUI 数据表中(用户单击一行以转到上述页面)。(TM)在该表中正确显示。这告诉我,我们正在正确地从数据库中获取值,并且生成 XML 以发送回 YUI 数据表的服务器代码也可以正常工作。

那么为什么相同的字符串在 YUI 数据表中正确显示,但在普通 JSP 中却没有,除非我们将符号硬编码到页面上?

4

2 回答 2

1

您可能有编码问题。如果您的 JSP 中没有显式编码:

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

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

于 2009-05-29T23:49:21.400 回答
0

当 char 显示为 ? 在浏览器(通常是 Firefox)中,这意味着页面编码(因为它被浏览器检测到将无法识别字符。一个很好的测试是在 Firefox 中查看->字符编码->UTF-8。如果字符显示正确,那么这意味着 (tm) char 使用 UTF-8 标准编码。您必须指示您的页面将响应编码标头设置为 UTF-8。这应该适合您。

如果这不起作用,您应该首先找出字符是如何编码的(例如,查看从数据库中读取的编码)并尝试将页面编码标头设置为该编码。

第二种格式有效,因为 (TM) 字符被编码为已知的 html 实体,浏览器会解释该实体,而不管页面编码如何。

于 2009-05-29T23:46:09.300 回答