2

我目前使用

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

在我的jsp页面中。

当我使用request.getParameter("...");它从文本框中获取数据时,它会检索这样的数据öÉ?É?É?öİ。当我使用不是英文字符的字符时,我看到了这个问题。我URIEncoding="UTF-8"server.xmltomcat中添加。但它检索到相同的(öÉ?É?É?öİ). 如何解决?

谢谢

编辑

感谢您的回答。我尝试了几件事,但没有解决问题。

这是我所做的:

  • <Connector URIEncoding="UTF-8" .../>在 server.xml 中添加。

  • <meta ... charset=utf-8>标签没问题,我试过了request.setCharacterEncoding("UTF-8");

  • 我还尝试<filter>了 web.xml 中的标记

这些操作都不能解决问题。我想知道这是否还有其他问题...(记住:我使用了<form method='post'>。我单击提交按钮,当我使用request.getParameter("..")此数据的格式获取数据时,格式不正确。)

4

7 回答 7

2

应在应用程序的所有层设置 UTF 8。

执行以下操作

1) HTML 代码

 <meta contentType="text/html; charset="UTF-8"/>

2) IE 视图的浏览器设置 -- 编码 -- Unicode (UTF-8)

3) Tomcat Server server.xml - 在连接器标签中添加“URIEncoding”属性为

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

catalina.sh/catalina.bat - 添加以下内容

set JAVA_OPTS=--Xms256m -Xmx1024m -Xss268k -server -XX:MaxPermSize=256m -XX:-UseGCOverheadLimit -Djava.awt.headless=true -Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8

set CATALINA_OPTS=-Dfile.encoding="UTF-8"

4) MIME 类型的响应应该是“application/x-www-form-urlencoded”

于 2012-10-19T09:52:02.443 回答
2

可能是因为实际的字符编码不是 UTF-8 ?如果字符本身以其他格式编码,那么我们就不能将它们标记为 UTF-8。

尝试通过给出各种字符集来解码它们,看看哪一个给出了正确的结果。我认为输入字符编码是 latin1(ISO-8859-1)。如果是,请按照以下代码

String param1 = request.getParameter("...");
if(param1!=null)
{
  param1 = new String(param1.getBytes("ISO-8859-1"));
}
于 2012-10-19T06:54:36.600 回答
2

您可以在 Servlet 中尝试此代码

if(request.getCharacterEncoding() == null) {
    request.setCharacterEncoding("UTF-8");
}
于 2012-10-19T06:25:14.027 回答
1

还有一个地方可以查。您是否在 JSP 文件中包含以下声明?

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

我认为问题在于浏览器仍然使用默认的 ISO-8859-1发送请求,如果未声明,这是标准字符集。

您还可以检查从服务器接收到的 HTTP 标头,以确保发回正确的字符集。

于 2012-10-19T06:55:35.607 回答
0

本质上,最简洁的方法是在您的属性文件和/或代码中使用Unicode(如果需要)(不建议)。

这样你就可以避免所有的编码问题,因为你的程序只处理 ASCII 码,正确的表示然后由客户端完全处理,你不必担心标准的操作系统编码或环境编码。

于 2012-10-19T07:10:47.363 回答
0

你应该试试看

String content= request.getParameter("content");
if(content!=null)
  content = new String(content.getBytes("ISO-8859-1"));
于 2016-08-03T07:38:54.380 回答
0

您还可以尝试在 web.xml 中添加以下过滤器:

<filter>
 <filter-name>Character Encoding Filter</filter-name>
 <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
  <init-param>
   <param-name>encoding</param-name>
   <param-value>UTF-8</param-value>
  </init-param>
</filter>

希望这有帮助

于 2015-11-02T06:22:19.913 回答