`

Servlet请求参数乱码解决方法

 
阅读更多

先写一个简单的JSP,里面有两种提交参数的方式:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<a href="TestServlet?getParam=中文">GET</a>
	<form action="TestServlet" method="post">
		<input type="hidden" name="postParam" value="中文"/>
		<input type="submit" value="POST"/>
	</form>
</body>
</html>

一、Tomcat

这里强调一点,在此使用的tomcat没有经过任何的修改与配置。
当页面通过两种方式请求Servlet的时候,参数的编码原本为UTF-8,在通过HTTP服务将请求发送出去的时候,会将参数重新按照ISO-8859-1编码后发送。因此,不管GET或POST方式,Servlet接收到的参数数据的编码均为ISO-8859-1,必须重新转码为UTF-8,才能正确显示中文参数。
1、GET方式的请求与接收过程
页面中参数“getParam=中文”的编码原本为UTF-8,当用GET方式发送参数的时候,参数值会被Web服务器从UTF-8转码为ISO-8859-1。
Servlet接收到的GET请求参数的编码当然为ISO-8859-1了,对于中文肯定显示不了,因此要将ISO-8859-1转换为UTF-8就可以正常显示中文了。
String getParam = request.getParameter("getParam");
getParam = new String(getParam.getBytes("ISO8859-1"), "UTF-8");
 
2、POST方式请求与接收过程
页面中参数“param=中文”的编码原本为UTF-8,当点击页面中提交按钮后,参数会以UTF-8编码格式发送给Servlet,因此Servlet接收参数的时候必须将请求的编码明确设定为UTF-8,这样才能正确接收中文。
request.setCharacterEncoding("UTF-8");
String postParam = request.getParameter("postParam");
或
String param = request.getParameter("postParam");
String x = new String(param.getBytes("ISO-8859-1"), "UTF-8");
 
 二、Enterprise Application Project在JBoss下
这种类型的项目无论是通过post方式还是通过get方式提交的中文,都只能使用如下的方法解决乱码的问题:
String name = request.getParameter("name");
name = new String(name.getBytes("ISO8859-1"), "UTF-8");
String code = request.getParameter("code");
code = new String(code.getBytes("ISO8859-1"), "UTF-8");
 设置request的characterEncoding的方式无法解决乱码的问题。
本文转自:
分享到:
评论

相关推荐

    jsp+servlet+mysql乱码解决的这天

    该方案的解决方法可以解决jsp+servlet+mysql开发中常见的中文乱码问题,确保中文字符的正确显示。 jsp+servlet+mysql乱码解决方案的实现步骤如下: 首先,在jsp页面中设置编码格式为utf-8,以确保页面中的中文字符...

    jsp传参 servlet接收中文乱码问题的解决方法.docx

    jsp 传参 servlet 接收中文乱码问题的解决方法 jsp 传参 servlet 接收中文乱码问题是一个经常遇到的问题,特别是在使用 Hibernate+Servlet 框架时。当我们在 jsp 页面传参到 servlet 时,中文字符经常会出现乱码...

    servlet输出中文乱码问题

    ### servlet输出中文乱码问题详解 #### 一、问题背景 在进行Web开发时,特别是使用Java Servlet处理HTTP请求的过程中,经常会遇到输出中文字符时出现乱码的问题。这不仅会影响用户体验,还会对项目的正常运行造成...

    ajax到servlet乱码解决

    例如,我们使用 AJAX 通过 URL 传递中文参数 "中文测试" 给 Servlet,Servlet 在接收参数时却变成了乱码 "�������"。这使得我们的应用程序无法正确地处理中文参数。 解决方案 要解决这个问题,我们可以从两...

    Servlet 中文乱码问题

    总结来说,解决Servlet中的中文乱码问题,关键在于明确字符编码的设定,确保请求和响应的编码一致。在开发过程中,应避免依赖系统或浏览器的默认编码,而是明确指定使用UTF-8或其他兼容性好的编码格式。同时,理解...

    servlet中解决乱码

    1. **请求参数乱码**:当通过GET或POST方式传递参数时,我们需要设置请求的编码。在`doGet()`或`doPost()`方法中,我们可以使用`HttpServletRequest`的`setCharacterEncoding()`方法设定字符编码,例如: ```java ...

    servlet输出JS乱码问题

    知识点:Servlet输出JS乱码问题解析与解决方案 一、Servlet与JS输出背景 Servlet是Java Web应用中的核心组件,主要用于处理客户端发送的HTTP请求,并生成响应。在Web开发中,Servlet经常被用来处理业务逻辑,然后...

    Servlet 中文乱码解决工具类

    虽然浏览器提交的请求使用的是中文编码格式UTF-8,但经过业务处理中的ISO-8859-1编码,仍然会出现中文乱码现象。解决此问题的方法非常简单,在业务处理中重新指定中文字符集进行编码即可解决。在实际的开发过程中,...

    servlet与jsp中文乱码处理

    下面将详细阐述servlet和jsp中文乱码的处理方式。 1. **理解编码基础** - **Unicode**:全球统一的字符编码标准,包含了世界上几乎所有的字符。 - **UTF-8**:最常用的Unicode编码方式,它以字节为单位进行编码,...

    servlet中文乱码问题

    通过修改Tomcat配置文件中的`URIEncoding`属性以及在Servlet中通过`response.setContentType()`和`request.setCharacterEncoding()`方法来设置字符编码,可以有效解决中文乱码问题。此外,还可以通过字符集转换的...

    解决servlet中文乱码问题1

    在部分内容中,解决servlet中文乱码问题1的方法可以分为两个方面: ① 在页面输入中文,请求页面后不出现乱码的方法是,确保contentType和pageEncoding保持一致为UTF-8,并且浏览器显示的字符编码也为UTF-8。这样...

    servlet过滤器解决乱码问题

    ### Servlet过滤器解决乱码问题 在Web应用开发过程中,字符编码问题经常出现,尤其是在处理中文等多字节字符时。如果不正确地设置字符编码,可能会导致页面显示乱码。本文将详细介绍如何通过Servlet过滤器来解决这...

    解决servlet页面乱码问题

    1. **HTTP请求乱码**:在处理POST请求时,如果请求参数是非ASCII字符,需要确保Servlet正确解析它们。可以通过以下方式设置请求编码: ```java request.setCharacterEncoding("UTF-8"); ``` 这行代码应尽早放...

    jsp传参 servlet接收中文乱码问题的解决方法

    以上所述的方法,就是在面对JSP传参到Servlet时可能出现的中文乱码问题时,可以采取的几种解决策略。通常情况下,采取前三个步骤应该能够解决大部分的乱码问题。在实际的开发过程中,开发者应根据具体环境和应用的...

    java解决解决get中文乱码问题

    本文将详细介绍如何在Java中解决GET请求中文乱码问题,并提供一种有效的方法。 #### 一、理解GET请求中文乱码的原因 在HTTP协议中,GET请求参数通常被附加在URL后面,浏览器会自动对这些参数进行编码,这个过程...

    JSP_利用Filter解决Servlet输出中文乱码的问题.docx

    在`doFilter`方法中,我们获取到请求参数后,使用`getBytes()`方法将参数值转换为ISO-8859-1编码(默认的HTTP编码),然后再用`new String()`构造方法将这些字节流转换为UTF-8编码,从而解决了中文乱码问题。...

    javaweb servlet(jsp)的乱码问题原理及解决

    - 对于GET请求中的中文参数,可以通过Java中的工具方法如`new String(bytes, "UTF-8")`来转换字节流为字符串,从而解决乱码问题。 5. **配置服务器默认编码**: - 修改服务器配置文件(如Tomcat的`server.xml`)...

    解决jsp+servlet开发中的中文乱码问题

    ### 解决JSP+Servlet开发中的中文乱码问题 #### 概述 在基于JSP(Java Server Pages)和Servlet技术的Java Web应用开发过程中,中文乱码问题一直是困扰开发者的一大难题。由于Java Web应用程序涉及多个组件之间的...

    Servlet中的中文乱码问题

    本篇文章将深入探讨如何解决Servlet中的中文乱码问题,以及如何在GBK、UTF-8和ISO-8859-1之间做出合理的选择。 首先,我们需要了解字符编码的基本概念。GBK是中国大陆广泛使用的中文字符集,包含了大部分中文字符;...

    tomcat与servlet乱码解决办法

    1. **请求参数的乱码**:当用户提交表单或URL中包含中文字符时,若未设置合适的字符编码,容易导致乱码。 2. **响应数据的乱码**:服务器端返回给客户端的数据若编码设置不当,也会出现乱码问题。 ##### 3.2 解决...

Global site tag (gtag.js) - Google Analytics