gpt4 book ai didi

java - JPA 的 Servlet 字符编码问题

转载 作者:行者123 更新时间:2023-11-29 05:31:02 25 4
gpt4 key购买 nike

好吧,我已经花了 three 七个小时进行谷歌搜索和测试,我放弃了,我不得不寻求帮助。 我以前在 Linux 上开发,一切都很简单,现在我使用 Windows,设置正确的语言环境这样简单的事情都行不通。

我创建了具有以下形式的简单 JSP:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<form action="save-user" method="post">
Name: <input type="text" name="name"><br>
Email: <input type="text" name="email"><br>
<input type="submit" value="Save">
</form>

和 Servlet:

    String name = request.getParameter("name");
String email = request.getParameter("email");

我收到的是 LeoÅ¡ 而不是 Leoš。我使用 WildFly 8.0RC1、Windows 8 czech、firefox。

我已经尝试过的:

  1. request.setCharacterEncoding("UTF-8");在先阅读之前参数
  2. 使用 request.setCharacterEncoding("UTF-8"); 过滤
  3. JVM 属性 -Dfile.encoding=UTF-8
  4. 从 war 中删除标准 JEE 堆栈 jar
  5. 修复 war 包装
  6. 将项目拆分为 WEB 和 EJB 模块

当部署 JPA 实体/DAO 时,变音符号会被破坏。如果我从 servlet 中注释掉实体并从 war 中删除 JPA 实体(当前从 WEB-INF/lib 中删除 OAuthLoginEJB.jar),那么我会收到正确的编码。如果我重新添加此 EJB,它会再次失败。是 JBoss/WildFly 错误吗?

我可以提供完整的来源:https://drive.google.com/file/d/0B-adlc5KThQDWTdYOEwxOUpTVEU/edit?usp=sharing它已准备好运行,您甚至不需要键入捷克字母,因为它们已预先填充。谢谢

最佳答案

在第一次读取请求 InputStream 之前,您需要调用 request.setCharacterEncoding("UTF-8")。在您在 servlet 中设置编码之前,过滤器可以读取参数。可能在 OAuthLoginEJB.jar 或其他依赖项中有一些过滤器,它首先读取参数?通常,这是一些用于调试的参数...使用 Servlet API 3.0,可以通过注释注册 servlet 和过滤器,因此即使 web.xml 为空,也可以注册一些过滤器。

关于java - JPA 的 Servlet 字符编码问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21068291/

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