html - &#160 在 HTML 上显示为 '?' 问号

标签 html jsp xslt character-encoding

我有 XSLT 问题...

<xsl:text>&#160;</xsl:text>

生成后,由于某种原因,生成的 JSP 文件会生成一个“?”反而。怎么了?

我最近的系统更改:
我改变了Java5 -> Java6
Weblogic -> Weblogic12
Eclipse Ganymede -> Oracle Pack Eclipse

编辑1:<xsl:output method="xml"/> ,编码=UTF-8

原始 XSL:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:include href="common.xsl"/>

    <xsl:output method="xml"/>

    ...

    <xsl:template name="makeLink">
        <xsl:variable name="fieldtype" select="name()"/>

        <xsl:variable name="currentNode"><xsl:value-of select="generate-id()"/></xsl:variable>

        <xsl:variable name="appendSpace">
            <xsl:for-each select="ancestor::ButtonList[position() = 1]/descendant::Button">
                <xsl:if test="generate-id() = $currentNode and position() &gt; 1">true</xsl:if>
            </xsl:for-each>
        </xsl:variable>

<a href="{$url}">
            <xsl:attribute name="id">btn_<xsl:value-of select="Action"/></xsl:attribute>
            <xsl:call-template name="populateAttributes">
                <xsl:with-param name="fieldtype">
                    <xsl:value-of select="$fieldtype"/>
                </xsl:with-param>
            </xsl:call-template>

            <xsl:copy-of select="@class"/>
            <xsl:copy-of select="@style"/>

            <xsl:text>&lt;span&gt;&lt;span&gt;</xsl:text><xsl:value-of select="$buffer"/><xsl:text>&lt;/span&gt;&lt;/span&gt;</xsl:text>
</a>
        <xsl:if test="not(@omitWhiteSpace)">
            <xsl:text>&#160;</xsl:text>
        </xsl:if>
        <xsl:if test="ReadOnly and ReadOnly != 'someReadOnlyMethod'
            and ReadOnly != 'someReadyOnlyMethod'
            and ReadOnly != ''">
            <xsl:text>&lt;/c:if&gt;</xsl:text>
        </xsl:if>
</xsl:template>
....

转换后(XSLT 后),生成的 JSP 页面:

<%@ page contentType = "text/html;charset=GBK"%>
<%@ page isELIgnored = "false"%>
<%@ page language="java" 
import=" my.controller.*, my.core.config.*, my.core.datastructure.*, my.core.error.*, my.core.util.*,
my.service.Constants, my.service.modulesvr.ModuleBean, myW.sn.*, java.util.Locale, java.util.Map"%>
<%@ taglib uri="http://www.mycompany.com/my/tags/htmltag-10" prefix="html"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%MySn mySession = (MySn) session.getValue("MySn"); QuickSearchController mb = (mySession == null) ? null : (QuickSearchController)
mySession.getModuleBean(); String sessionToken = mySession.getSessionToken(); String htmlCharSet = mySession.getEncoding();
MyUsr user = mySession.getMyUsr(); String[] result; Object o;%>

.........

<a href="#" id="btn_NEWPROP" onclick="submitForm('/xxx/xxx/NEWPROP','theForm');    return (false);" class="actionBtn"><span><span>NEW PROP</span></span></a> </c:if>

编辑2:看起来如果我使用<xsl:text>&amp;#160;</xsl:text>而不是<xsl:text>&#160;</xsl:text> ……问题似乎已经消失了。在 JSP 中,它将显示为  ,在浏览器中,它被视为不间断空格,这是预期的。

最佳答案

如果您的编码错误,这种情况经常会发生。您用什么编码编写输出?您如何提供该页面?可能您正在以 UTF-8 进行序列化,但尝试以 ISO-8859-1(或 Windows-1252)显示,反之亦然。

检查某处的默认编码是否已更改。

就因为你说<xsl:output method="xml" encoding="UTF-8"/>并不意味着该程序会尊重它。 XSLT 是否嵌入到 Java 中? Java 是否控制流/读取器/写入器?

如果您可以保存文件的一部分并将其转储为十六进制,您应该很快就能找到答案。如果您看到0xC2 0xA0那么你的文件确实是UTF-8格式的。但是,如果您只看到 0xA0单独而言,那么您就属于 ISO-8859-1 或其密切关系之一。

也有可能页面已正确呈现,但页面使用了错误的编码。您可以查看返回的 header 吗?可以使用 Firefox 或 Chrome 中的 Firebug“Web 开发人员->信息->查看响应 header ”或使用 IE 调试工具。

关于html - &#160 在 HTML 上显示为 '?' 问号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11748978/

相关文章:

java - 如果上传jsp上存在文件,则重命名

java - jsp 文本字段绑定(bind)

Java XSLT 转换器异常 : Could not find function: exists

c# - 如何使用 C# 代码检测 XSLT 转换中的 "parsing time"?

javascript - 更改从 URL 加载的图像的大小

javascript - 个人数据间隔 bootstrap carousel 4

java - 如果不满足条件,则防止注销

html - 将彩色文本从 HTML 转换为 DOCBOOK(以及 PDF)

html - 如何仅在调整大小时使 Bootstrap 按钮全宽

html - Firefox 标签元素边框与相对位置截断