gpt4 book ai didi

java - Java servlet 出现 XML XPath utf-8 错误?

转载 作者:太空宇宙 更新时间:2023-11-04 10:23:06 25 4
gpt4 key购买 nike

我使用以下代码读取包含 utf-8 字符的 xml 文件:

InputStream inputStream = new FileInputStream(dataFile);
Reader reader = new InputStreamReader(inputStream, "UTF-8");

InputSource is = new InputSource(reader);
is.setEncoding("UTF-8");

DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(is);
doc.getDocumentElement().normalize();

如果我在控制台 java 应用程序中运行上面的代码,一切都很好。但是,如果我在 Tomcat 8 的 servlet/jsp 中运行该代码,那么我会丢失所有 utf-8 字符。在我的 servlet/jsp 中,我已经这样做了:

response.setCharacterEncoding("UTF-8");
request.setCharacterEncoding("UTF-8");

在tomcat 8 server.xml文件中,我已经设置了

<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />

问题的可能原因是什么?

最佳答案

还有一些额外的步骤可以尝试:

  1. 尝试定义一个字符集过滤器类:

...

public void doFilter(
ServletRequest request,
ServletResponse response,
FilterChain next) throws IOException, ServletException {
request.setCharacterEncoding("UTF-8");
response.setContentType("text/html; charset=UTF-8");
response.setCharacterEncoding("UTF-8");
next.doFilter(request, response);
}

...

还将相关过滤器映射添加到 web.xml :

<filter>
<filter-name>CharsetFilter</filter-name>
<filter-class>my.CharsetFilter</filter-class>
</filter>

<filter-mapping>
<filter-name>CharsetFilter </filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

过滤器确保如果浏览器不使用 UTF-8,那么您的过滤器将自行转换所有请求。

  • 如果使用 JSP,请将以下行添加到每个页面的最顶部:

    <%@page pageEncoding="UTF-8" contentType="text/html; charset=UTF-8"%>
  • 或将以下行添加到您的 web.xml 中:

    <jsp-config>
    <jsp-property-group>
    <url-pattern>*.jsp</url-pattern>
    <page-encoding>UTF-8</page-encoding>
    </jsp-property-group>
    </jsp-config>

    还添加此<fmt:requestEncoding value="UTF-8" />将 JSTL 行添加到 JSP 代码可能是一个解决方案。

    顺便说一句,在这些操作之后,不要忘记重新启动 Tomcat 实例。

    希望有帮助。

    关于java - Java servlet 出现 XML XPath utf-8 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50870563/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com