JSP向servlet传中文参数乱码问题

写于2008-09-21 15:22。。。赶紧搬过来

最近很多同学都遇到了JSP向servlet传递中文参数的时候出现乱码问题,现在网上有很多方法都是你抄我的,我抄你的。我不反对copy,但是你能负责一点好么,至少自己试验一下行得通。

下面我把我的解决方法写出来,希望对大家有所帮助。有图的喔(*^__^*) 嘻嘻……
首先,我们写一个几行的简单的实例代码

第一个消息
第二个消息

 效果图,如下图所示

然后我们输入两个消息,均用中文输入

点击提交按钮后,我们进入Servlet进行处理,Servletdopost方法里的代码为:
String message_1_here = request.getParameter("message_1");
String message_2_here = request.getParameter("message_2");
System.out.println("message_1_here 的值是:" + message_1_here);
System.out.println("message_2_here 的值是:" + message_2_here);
byte[] b = message_1_here.getBytes("ISO-8859-1");
message_1_here = new String(b,"GB2312");
System.out.println("经过转换,message_1_here 的值是:" + message_1_here);

我是用的netbeans测试这个程序,点击提交按钮后,在netbeans的控制台的输出为

message_1_here 的值是:ÖÐÎÄÂÒÂë²âÊÔ

message_2_here 的值是:¶Ô±È×é

经过转换,message_1_here 的值是:中文乱码测试

所以说,只要在你的servlet代码里面加入

byte[] b = message_1_here(换成你自己的变量名字).getBytes(“ISO-8859-1”);

message_1_here(换成你自己的变量名) = new String(b,”GB2312″);

这段代码处理以后,就可以正常显示了。

当然,如果你的jsp页面第一句为:

<%@page contentType=”text/html” pageEncoding=”UTF-8″%>

即你的jsp页面编码是UTF-8,那么把上面那段处理代码中的GB2312改为UTF-8即可

注:以上解决方案只适合 jspservlet通过request.getParameter()传递中文参数时候出现的乱码问题,其他情况,如jspjsp传递中文参数乱码问题不在上述讨论范围内

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.