写于2008-09-21 15:22。。。赶紧搬过来
最近很多同学都遇到了JSP向servlet传递中文参数的时候出现乱码问题,现在网上有很多方法都是你抄我的,我抄你的。我不反对copy,但是你能负责一点好么,至少自己试验一下行得通。
下面我把我的解决方法写出来,希望对大家有所帮助。有图的喔(*^__^*) 嘻嘻……
首先,我们写一个几行的简单的实例代码
效果图,如下图所示
然后我们输入两个消息,均用中文输入
点击提交按钮后,我们进入Servlet进行处理,Servlet中dopost方法里的代码为:
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即可
注:以上解决方案只适合 jsp向servlet通过request.getParameter()传递中文参数时候出现的乱码问题,其他情况,如jsp向jsp传递中文参数乱码问题不在上述讨论范围内