- 浏览: 600105 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (199)
- 纯java (22)
- 中间件 (1)
- java线程 (1)
- webwork (10)
- HTML/CSS (11)
- struts2 (10)
- mysql (14)
- Linux (8)
- 字符编码和转换 (1)
- WebService (1)
- web (21)
- javascript (33)
- ajax (5)
- 随便写写 (3)
- svn (0)
- eclipse使用技巧 (10)
- Ant (1)
- 互联网发展方向 (1)
- Jquery (12)
- 视频 (2)
- MD5 (1)
- 项目经验总结 (1)
- Oracle (2)
- Netbeans (1)
- Apache/Tomcat (4)
- springside (1)
- hibernate (6)
- SpringSecurity (0)
- java与文件 (1)
- CKEditor (4)
- JSON (3)
- 笔试题 (0)
- 应用部署 (1)
- 杂七杂八 (1)
- android (1)
- jQuery UI (1)
- XML相关技术 (1)
- HTML5 (1)
- CSS3 (0)
- 正则表达式 (1)
- http协议 (3)
- 算法 (5)
- 互联网知识 (1)
最新评论
-
hp321:
我现在遇到一个开发自定义按钮的问题,想请教下你:问题如下:举例 ...
Ckeditor 如何在源码模式下添加可以显现的按钮 -
make1828:
javascript跨域解决方案(一) -
huxianwen:
问题是, ckeditor编辑器在源码模式并不能插入任何代码呀 ...
Ckeditor 如何在源码模式下添加可以显现的按钮 -
nidonglin1986:
虽然解决了问题,但是原因说的不是很明白啊。中文跟HTML标志 ...
struts2的标签在JS中的使用 中文乱码 -
ldw1986hf123:
[*]
JVM工作原理
环境:
apache-tomcat-6.0.24.zip
jdk1.6.0_16
WindosXP 简体中文版
Netbeans6.8
目标:
解决Servlet接收到JSP传递的参数后乱码问题,乱码发生在Servlet一方。
JSP向Serlvet传递参数有两种方式,一种是GET方式,另一种是POST方式,为了解决乱码问题,必须对这两种方式工作原理有个深刻理解才行。
这里先写一个简单的JSP(工程所有的源代码文件编码均为GBK),里面有两种提交参数的方式:
<%@page contentType="text/html" pageEncoding="GBK"%>
<!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>JSP Page</title>
</head>
<body>
<h1>页面提交中文测试!</h1>
<h2>GET方式</h2>
<a href="/testweb/TestServlet?param=中文">GET方式提交中文测试</a>
<h2>POST方式</h2>
<form action="/testweb/TestServlet" method="post">
<input type="text" name="param" value="中文"/>
<button type="submit" name="提交中文参数测试" value="提交中文参数测试"/>
</form>
</body>
</html>
然后定义一个Servlet接收提交的参数。
这里强调一点,在此使用的tomcat没有经过任何的修改与配置。
当页面通过两种方式请求Servlet的时候,参数的编码原本为GBK,在通过HTTP服务将请求发送出去的时候,会将参数重新按照ISO-8859-1编码后发送。因此,不管GET或POST方式,Servlet接收到的参数数据的编码均为ISO-8859-1,必须重新转码为GBK,才能正确显示中文参数。
1、GET方式的请求与接收过程
页面中参数“param=中文”的编码原本为GBK,当用GET方式发送参数的时候,参数值会被Web服务器从GBK转码为ISO-8859-1。
Servlet接收到的GET请求参数的编码当然为ISO-8859-1了,对于中文肯定显示不了,因此要将ISO-8859-1转换为GBK就可以正常显示中文了。
String param = request.getParameter("param");
String x = new String(param.getBytes("ISO-8859-1"), "GBK");
System.out.println("GET方式获取的中文参数值:" + x);
2、POST方式请求与接收过程
页面中参数“param=中文”的编码原本为GBK,当点击页面中提交按钮后,参数会以GBK编码格式发送给Servlet,因此Servlet接收参数的时候必须将请求的编码明确设定为GBK,这样才能正确接收中文。
request.setCharacterEncoding("GBK");
String param = request.getParameter("param");
System.out.println("POST方式获取的中文参数值:" + param);
或者,可以按照get方式来接收post的参数:
String param = request.getParameter("param");
String x = new String(param.getBytes("ISO-8859-1"), "GBK");
System.out.println("GET方式获取的中文参数值:" + x);
疑问:为什么在GET方式下不设定请求的编码格式呢?原因是GET方式使用的编码为ISO-8859-1,用GBK、UTF-8等接收效果都是一样的(都是一堆字母和符号),编不编都一个样,如果指定ISO-8859-1编码是多一翻手续,如果指定了非ISO-8859-1编码,是脑子还不清醒,没搞明白这个原理,因此,GET方式就不要指定请求的编码了。
下面看看Servlet的写法:
package jweb.lavasoft;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DealPageParamServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String param = request.getParameter("param");
String x = new String(param.getBytes("ISO-8859-1"), "GBK");
System.out.println("GET方式获取的中文参数值:" + x);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("GBK");
String param = request.getParameter("param");
System.out.println("POST方式获取的中文参数值:" + param);
}
}
其实,只要搞明白了编码过程,遇到乱码问题就能从容应对了。
常常见到有人遇到乱码了,就开始修改Tocmat的server.xml的配置文件,或者添加过滤器等等,糊里糊涂搞,大多数情况问题都能解决掉,其实也仅仅是个瞎猫逮住个死耗子。
apache-tomcat-6.0.24.zip
jdk1.6.0_16
WindosXP 简体中文版
Netbeans6.8
目标:
解决Servlet接收到JSP传递的参数后乱码问题,乱码发生在Servlet一方。
JSP向Serlvet传递参数有两种方式,一种是GET方式,另一种是POST方式,为了解决乱码问题,必须对这两种方式工作原理有个深刻理解才行。
这里先写一个简单的JSP(工程所有的源代码文件编码均为GBK),里面有两种提交参数的方式:
<%@page contentType="text/html" pageEncoding="GBK"%>
<!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>JSP Page</title>
</head>
<body>
<h1>页面提交中文测试!</h1>
<h2>GET方式</h2>
<a href="/testweb/TestServlet?param=中文">GET方式提交中文测试</a>
<h2>POST方式</h2>
<form action="/testweb/TestServlet" method="post">
<input type="text" name="param" value="中文"/>
<button type="submit" name="提交中文参数测试" value="提交中文参数测试"/>
</form>
</body>
</html>
然后定义一个Servlet接收提交的参数。
这里强调一点,在此使用的tomcat没有经过任何的修改与配置。
当页面通过两种方式请求Servlet的时候,参数的编码原本为GBK,在通过HTTP服务将请求发送出去的时候,会将参数重新按照ISO-8859-1编码后发送。因此,不管GET或POST方式,Servlet接收到的参数数据的编码均为ISO-8859-1,必须重新转码为GBK,才能正确显示中文参数。
1、GET方式的请求与接收过程
页面中参数“param=中文”的编码原本为GBK,当用GET方式发送参数的时候,参数值会被Web服务器从GBK转码为ISO-8859-1。
Servlet接收到的GET请求参数的编码当然为ISO-8859-1了,对于中文肯定显示不了,因此要将ISO-8859-1转换为GBK就可以正常显示中文了。
String param = request.getParameter("param");
String x = new String(param.getBytes("ISO-8859-1"), "GBK");
System.out.println("GET方式获取的中文参数值:" + x);
2、POST方式请求与接收过程
页面中参数“param=中文”的编码原本为GBK,当点击页面中提交按钮后,参数会以GBK编码格式发送给Servlet,因此Servlet接收参数的时候必须将请求的编码明确设定为GBK,这样才能正确接收中文。
request.setCharacterEncoding("GBK");
String param = request.getParameter("param");
System.out.println("POST方式获取的中文参数值:" + param);
或者,可以按照get方式来接收post的参数:
String param = request.getParameter("param");
String x = new String(param.getBytes("ISO-8859-1"), "GBK");
System.out.println("GET方式获取的中文参数值:" + x);
疑问:为什么在GET方式下不设定请求的编码格式呢?原因是GET方式使用的编码为ISO-8859-1,用GBK、UTF-8等接收效果都是一样的(都是一堆字母和符号),编不编都一个样,如果指定ISO-8859-1编码是多一翻手续,如果指定了非ISO-8859-1编码,是脑子还不清醒,没搞明白这个原理,因此,GET方式就不要指定请求的编码了。
下面看看Servlet的写法:
package jweb.lavasoft;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DealPageParamServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String param = request.getParameter("param");
String x = new String(param.getBytes("ISO-8859-1"), "GBK");
System.out.println("GET方式获取的中文参数值:" + x);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("GBK");
String param = request.getParameter("param");
System.out.println("POST方式获取的中文参数值:" + param);
}
}
其实,只要搞明白了编码过程,遇到乱码问题就能从容应对了。
常常见到有人遇到乱码了,就开始修改Tocmat的server.xml的配置文件,或者添加过滤器等等,糊里糊涂搞,大多数情况问题都能解决掉,其实也仅仅是个瞎猫逮住个死耗子。
发表评论
-
Javascript的分层概念
2011-12-07 17:27 1308Javascript如何分层: 我们把 ... -
什么是骆驼命名法
2011-12-05 11:22 3044骆驼式命名法(又称驼峰命名法),正如它的名称Came ... -
UrlRewrite技术的用处
2011-10-18 10:49 953UrlRewrite有什么用处? 1、满足搜索引擎的要求 ... -
request.getSession()、request.getSession(false)和request.getSession(true)的区别
2011-03-24 15:23 1254request.getSession()、request.ge ... -
怎么查看80端口占用情况? 如何查看端口占用情况?
2010-10-17 10:43 1958查看端口占用情况有几种方式: 1. ... -
Jquery Validation 中使用remote做ajax验证时遇到的问题
2010-09-17 10:59 6121需要验证的页面中js代 ... -
HTTPS和HTTP的区别
2010-07-09 10:12 974HTTPS(Secure Hypertext Transf ... -
httpClient请求时乱码问题的解决
2010-07-07 15:56 2239当你使用httpClient发送一个请求时,如果你的请求连接中 ... -
如何获得web请求中的重名参数问题
2010-06-29 17:06 14161.对于一个表单中也许会有重名的参数,好比请求一个地址带了很多 ... -
超级链接,点击后改变字的颜色方法
2010-06-18 16:08 3110可以在<a>中添加: <a onclick= ... -
iframe 调用子页面的js方法
2010-04-26 22:18 3540在主页head面中添加: <script lang ... -
cookie使用工具类
2010-02-04 15:32 12251.可以将对cookie的操作封装到一个工具类,见附件。 2 ... -
cookie与session机制
2010-02-04 15:25 1095(一)cookie和session机制 首先我们来 ... -
web 取颜色的编码值的小工具
2010-01-06 13:59 1579今天发现了一个取桌面上任意颜色的编码的小软件叫Mezer To ... -
如何设定网页过期时间和缓存情况
2009-12-25 11:31 3411在开发过程中遇到一个问题,在列表页上点击修改按钮,然后点击浏览 ... -
页面缓存问题的处理
2009-11-02 15:52 1139http://shop.guoshi.com/cetv/cet ... -
linux下tomcat的的后台访问页面的设置
2009-10-19 14:10 1337在windows下tomcat是有一个后台访问的页面的,在里面 ... -
linux下tomcat的jvm虚拟机内存设置
2009-10-15 17:13 2522tomat默认的虚拟机内存是128M要想自己设置需要修改lin ... -
jsp浏览器访问全部是乱码问题的解决
2009-08-24 16:07 1948今天套用美工设计好的html页面是遇到一个问题,就是将静态ht ... -
定时器的使用
2009-06-23 13:53 1158什么情况下我们会使用 ...
相关推荐
jsp 传参 servlet 接收中文乱码问题的解决方法 jsp 传参 servlet 接收中文乱码问题是一个经常遇到的问题,特别是在使用 Hibernate+Servlet 框架时。当我们在 jsp 页面传参到 servlet 时,中文字符经常会出现乱码...
通过以上方法,基本可以解决servlet和jsp在接收和显示中文时的乱码问题。但在实际开发中,可能还需要根据具体环境和需求进行调整。了解这些知识点,对于Java Web开发者来说是非常必要的,能够提高项目的稳定性和用户...
### Servlet及JSP解决中文乱码问题 #### 一、引言 在Web开发中,中文乱码问题一直是困扰开发者的一大难题。特别是在使用Java技术栈(如Servlet与JSP)进行开发时,如果处理不当,很容易出现中文字符显示乱码的情况...
### 解决JSP+Servlet开发中的中文乱码问题 #### 概述 在基于JSP(Java Server Pages)和Servlet技术的Java Web应用开发过程中,中文乱码问题一直是困扰开发者的一大难题。由于Java Web应用程序涉及多个组件之间的...
如果上述方法依然无法解决问题,可能需要考虑在获取请求参数后进行二次编码转换。例如,将获取到的参数再通过特定编码转换为正确的UTF-8字符串。这通常是一种备选方案,不推荐作为主要的处理方式: ```java String ...
### javaweb servlet(jsp)的乱码问题原理及解决 #### HTTP协议的基本理解与乱码问题背景 HTTP协议作为互联网应用中最为广泛使用的通信协议之一,它定义了客户端和服务端之间的交互规则。HTTP请求主要分为GET和...
在IT领域,尤其是在Web开发中,遇到中文乱码问题是开发者们常见的挑战之一。尤其是在使用Java Server Pages(JSP)和...通过上述方法,可以有效地解决JSP和Servlet中的中文乱码问题,提高Web应用的用户体验和稳定性。
当客户端(浏览器)发送包含中文字符的请求(如GET参数或POST数据)到Servlet时,如果Servlet没有正确设置接收的字符编码,就会出现乱码。解决方法是在`doGet`或`doPost`方法中,使用`request.setCharacterEncoding...
通过修改Tomcat配置文件中的`URIEncoding`属性以及在Servlet中通过`response.setContentType()`和`request.setCharacterEncoding()`方法来设置字符编码,可以有效解决中文乱码问题。此外,还可以通过字符集转换的...
### Servlet过滤器解决乱码问题 在Web应用开发过程中,字符编码问题经常出现,尤其是在处理中文等多字节字符时。如果不正确地设置字符编码,可能会导致页面显示乱码。本文将详细介绍如何通过Servlet过滤器来解决这...
总结来说,解决JSP页面中文乱码问题的关键在于保持字符编码的一致性,从编辑器保存文件的编码、JSP页面的编码声明、Servlet的响应编码、POST请求的参数编码,到服务器处理GET请求的编码,都需要进行适配和统一。...
本文将深入探讨“JSP乱码”的多种解决方案,并提供实用的解决策略。 1. **理解字符编码的基本概念** - 字符编码是计算机对文字进行存储和处理的标准,常见的有ASCII、GBK、UTF-8等。 - JSP页面默认使用ISO-8859-1...
知识点:Servlet输出JS乱码问题解析与解决方案 一、Servlet与JS输出背景 Servlet是Java Web应用中的核心组件,主要用于处理客户端发送的HTTP请求,并生成响应。在Web开发中,Servlet经常被用来处理业务逻辑,然后...
对于Servlet接收Form/Request传递的参数时显示为乱码的问题,我们可以通过在用到request方法的前面加上:request.setCharacterEncoding("GBK");来解决。 在数据库存取的时候产生乱码的问题,我们可以通过选择UTF-8...
总之,解决JavaWeb中的乱码问题需要从多个层面进行考虑:设置过滤器统一请求和响应的编码,确保JSP页面的编码正确,以及在处理文件时注意文件内容的编码。通过这些方式,我们可以有效防止和解决乱码问题,提高应用...
解决JSP页面显示中文乱码的问题,关键在于确保所有环节使用相同的字符编码。可以按照以下步骤操作: 1. 使用统一的文件编码:确保JSP文件以UTF-8或其他支持中文的编码格式存储,并且IDE(如Eclipse)配置为使用该...
jsp页面传值中文乱码问题处理 在 JSP 页面中传值时,中文字符可能会出现乱码问题,这...JSP 页面传值中文乱码问题可以通过修改编码方式、设置输出编码、接收参数编码、Get 提交编码和数据库连接参数编码等方式来解决。
【JSP中文乱码问题综述】 在JSP开发中,中文乱码是一个常见的问题,主要是由于编码不一致和处理不当导致的。Java语言和JSP文件基于Unicode,但保存和处理时可能会采用不同的编码,这就会引发乱码。本文将深入探讨...