tomcat在开发WEB服务器端程序的时候,我们经常遇到中文乱码的情况
现在特殊说明如下,主要要清除几个概念:
1.JAVA class类的编码是Unicode统一编码的,支持中文和其他UTF-8的字符用作类名等等;
2.TOMCAT内部实现的编码方式,TOMCAT的默认是以ISO-8859-1作为默认的编码。
2.request,response请求和响应的编码方式。
TOMCAT的执行机制:GET和POST有区别:
首先TOMCAT内核以指定的编码conf/server.xml中(URIEncoding=“GBK”)来读取Unicode的class的byte编码文件
到TOMCAT内核运行机制,等待请求,对于GET方式使用request.setCharacterEncoding("GBK")指定的编码读入TOMCAT,
在获取字符串str时使用str = new String(str.getBytes("ISO-8859-1"),"GB2312")因为TOMCAT的编码为ISO-8859-1
所以在获取中文字符时一定要使用如上才可以获取到正确字符。
对于POST获得的数据,使用request.setCharacterEncoding("GBK")指定的编码读入TOMCAT,在获取字符时候直接使用
str = getParameter("variables")就可以了,如果有返回,直接按照response.setContentType("text/html; charset=GBK")指定的编码返回。
另外一个问题是怎么样改变POST方法的提交的数据编码方式?
POST请求需要指定它发送的参数和值的编码,因为大多数客户端可能没有设置一个明确的编码,默认使用的是ISO-8859-1,因此可以使用一个javax.servlet.Filter来改变编码。Tomcat已经提供了完成这个功能的过滤器的例子。请参看:
6.x
webapps/examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.java
如下是一个实例验证GET和POST提交中文参数的过程:
建一个form.html
文件如下:
<body>
<form action="./TestServlet" method="GET">
<input name="username">
<input type="submit">
</form>
</BR>
<form action="./TestServlet" method="POST">
<input name="username">
<input type="submit">
</form>
</body>
在TestServlet.java文件中修改代码最终的代码如下:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("GBK");
response.setContentType("text/html;charset=GBK");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC /"-//W3C//DTD HTML 4.01 Transitional//EN/">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print("你输入的用户名:");
//GET方法代码转换
String username=request.getParameter("username");
username =new String(username.getBytes("ISO8859-1"),"GBK");
out.print(username);
out.println(", using the GET method");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("GBK");
//response.setContentType("text/html");
response.setContentType("text/html;charset=GBK");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC /"-//W3C//DTD HTML 4.01 Transitional//EN/">");
out.println("<HTML>");
out.println(" <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println(" <BODY>");
out.print("你输入的用户名:");
out.print(request.getParameter("username"));
out.println(", using the POST method");
out.println(" </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}
输入中文名,测试doGet(),doPost都无乱码。
分享到:
相关推荐
本文将详细阐述GET和POST请求中文乱码的处理方式,以帮助开发者解决这类问题。 首先,我们需要了解为什么会出现中文乱码。在HTTP请求中,数据通常是按照ASCII编码进行传输的,而中文字符通常使用UTF-8或其他多字节...
"Tomcat中Get和Post出现乱码的解决办法" 在 Tomcat 中,Get 和 Post 方法都可能出现乱码问题,这主要是由于编码问题引起的。在本文中,我们将详细介绍 Tomcat 中 Get 和 Post 方法出现乱码的解决办法。 一、乱码...
本文将深入探讨如何处理POST和GET提交时的乱码问题,以确保网页显示正常,避免出现中文或者其他非ASCII字符的乱码现象。 首先,我们要理解POST和GET的区别。POST请求通常用于向服务器发送大量数据或修改服务器资源...
在这个"Servlet表单Get和Post方式读取"的主题中,我们将深入探讨如何使用Servlet来接收和处理来自HTML表单的GET和POST请求。 首先,让我们了解GET和POST这两种HTTP方法的基本概念: 1. GET方法:这是HTTP请求中最...
在Java的Servlet开发中,中文乱码问题是一个常见的困扰,主要涉及到请求(request)和响应(response)两个方面。本文将详细解析这两个方面的乱码问题及其解决方案。 首先,我们需要了解一些基础知识。GBK编码是一种...
在 Web 开发中,POST 和 GET 请求可能会出现乱码问题,导致中文参数无法正确传输和解析。今天,我们将讨论如何解决 POST 和 GET 请求乱码问题。 解决 POST 请求乱码问题 在 Spring 框架中,我们可以使用 ...
总结,"超强过滤器"是解决JSP-Servlet之间中文参数GET-POST传递问题的有效手段,通过统一设定请求的字符编码,确保在整个Web应用中中文数据能够正确无误地传输和处理。对于大型项目,这样的全局解决方案可以大大提升...
在IT行业中,网络通信是不可或缺的一部分,而URL编码、GET和POST提交以及乱码问题则是开发者经常遇到的技术挑战。本文将深入探讨这些知识点,并提供相应的解决方案。 首先,URL编码是因URL(统一资源定位符)中不能...
然而,在处理中文参数时,尤其是通过GET和POST方法传递时,经常会出现乱码问题。这通常是由于字符编码不一致或者处理不当导致的。以下是对这一问题的详细解析: 首先,我们需要理解字符编码的基本概念。在Web中,...
在Java Web开发过程中,乱码问题主要出现在客户端向服务器发送请求的过程中,尤其是在处理中文等多字节编码的字符时更为明显。 #### 编码问题产生的原因 - **输入编码**:浏览器发送请求时对参数进行编码,默认...
这个"get与post乱码过滤器"很可能是一个Servlet Filter,它是Java Servlet API提供的一种机制,可以拦截请求和响应,在它们到达目标Servlet或JSP之前进行预处理,或者在离开服务器之前进行后处理。Filter可以在请求...
本文档将详细讲解如何处理Servlet中的中文乱码问题,包括POST请求、GET请求以及通过`sendRedirect()`重定向时可能出现的乱码现象,并提供具体的解决方案。 #### 二、乱码原因分析 乱码问题通常发生在字符编码不匹配...
以下将详细解释如何解决Java中处理POST和GET请求时的中文乱码问题。 **POST请求的处理** 1. **表单页面设置**:在HTML表单所在的页面头部,使用`<meta>`标签指定页面的字符集,例如`;charset=utf-8">`。这使得...
在Web开发中,尤其是使用Struts2和Servlet框架时,中文乱码问题是一个常见的困扰。本文将详细解析如何解决这两个框架中的中文乱码问题。 首先,我们来看Struts2的情况。在处理中文乱码时,主要涉及到两种HTTP请求...
当客户端(浏览器)发送包含中文字符的请求(如GET参数或POST数据)到Servlet时,如果Servlet没有正确设置接收的字符编码,就会出现乱码。解决方法是在`doGet`或`doPost`方法中,使用`request.setCharacterEncoding...
特别是在使用Java技术栈(如Servlet与JSP)进行开发时,如果处理不当,很容易出现中文字符显示乱码的情况。本文将详细介绍如何在Servlet与JSP中彻底解决中文乱码问题,并给出具体的解决方案。 #### 二、中文乱码的...
Java中的乱码问题是一个常见的编程挑战,特别是在处理网络请求(如GET和POST)时。本文将深入探讨如何解决这些问题,并且不局限于特定的请求类型。首先,我们需要理解字符编码的基本概念,然后分析Java中可能出现...
在Java的Web开发中,Servlet扮演着服务器端处理HTTP请求和响应的重要角色。然而,由于字符编码的不同,处理用户输入时可能会出现乱码问题。本文将深入探讨如何在Servlet中解决乱码问题,确保数据正确无误地进行编码...
总结来说,理解GET和POST请求的工作原理,以及如何处理中文乱码问题,对于开发和测试服务器端功能至关重要。这涉及到HTTP协议、字符编码、客户端与服务器之间的交互,以及测试策略等多个方面,都是IT专业人士必备的...
- 测试不同的请求类型(如GET和POST),确保所有请求都能正确解析。 - 检查JSP页面的编码是否与过滤器设置的编码一致。 #### 四、注意事项 - **编码一致性**:确保整个应用程序(包括前端页面、后端处理以及...