Encoding JSTL可以转换UTF-8编码的XML吗?

Encoding JSTL可以转换UTF-8编码的XML吗?,encoding,Encoding,我正在制作一个简单的JSP应用程序,将XML数据转换为HTML。 我使用JSTL,XML数据用UTF-8编码。它可以工作,但在浏览器中丹麦字符看起来很奇怪 像这样: 直接用jsp书写的丹麦字符:ÆØæå 使用jstl转换的相同丹麦字符: 字符:Æ字符:ÃФ 字符:ø字符:ø 人物:Ã……人物:Ã日元 但是,如果手动更改xml定义,如下所示: <?xml version="1.0" encoding="ISO-8859-1" ?> 输出被正确地转换 我是否应该以某种方式设置

我正在制作一个简单的JSP应用程序,将XML数据转换为HTML。 我使用JSTL,XML数据用UTF-8编码。它可以工作,但在浏览器中丹麦字符看起来很奇怪

像这样:

直接用jsp书写的丹麦字符:ÆØæå
使用jstl转换的相同丹麦字符:
字符:Æ字符:ÃФ
字符:ø字符:ø
人物:Ã……人物:Ã日元

但是,如果手动更改xml定义,如下所示:

<?xml version="1.0" encoding="ISO-8859-1" ?>

输出被正确地转换

我是否应该以某种方式设置JSTL来处理UTF-8,或者我的文件实际上是错误的拉丁1编码?我不知道如何检查这个

这是我的测试xml文件:

    <?xml version="1.0" encoding="UTF-8" ?>
<rows>
<row>
    <name>character: Æ</name>
    <surname>character: æ</surname>
</row>
<row>
    <name>character: Ø</name>
    <surname>character: ø</surname>
</row>
<row>
    <name>character: Å</name>
    <surname>character: å</surname>
</row>
</rows>

人物:Æ
人物:æ
人物:Ø
人物:ø
字符:Å
人物:å
以下是我的xsl:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
    <table border="0">
        <xsl:for-each select="rows/row">
            <tr>
                <td>
                    <xsl:value-of select="name" />
                </td>
                <td>
                    <xsl:value-of select="surname" />
                </td>
            </tr>
        </xsl:for-each>
    </table>
</xsl:template>
</xsl:stylesheet>

My index.jsp:

<?xml version="1.0" encoding="UTF-8" ?>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org  /TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Insert title here</title>
</head>
<body>
Written directly in jsp: ÆØÅ æøå
<h3>xml transformed with jstl:</h3>
<c:import url="/Test.xsl" var="xsltdoc" />
<c:import url="/Test.xml" var="xmldoc" />
<x:transform xml="${xmldoc}" xslt="${xsltdoc}" />
</body>
</html>

在此处插入标题
直接用jsp编写:ÆØæå
使用jstl转换的xml:

我正在JBossAP4.2.3上使用JSTL库(实现版本:1.2)。

好的,我检查了xml数据的编码,结果是正确的,它是UTF-8编码的

显然,在index.jsp中,必须将JSTL设置为像这样使用UTF-8

<c:import url="/Metadata1.xsl" var="xsltdoc" charEncoding="UTF-8" />
<c:import url="/Metadata1.xml" var="xmldoc" charEncoding="UTF-8" />


这就解决了我的问题。

谢谢,我的法语字母也有同样的问题,你的解决方案解决了我的问题。