在线等待朋友帮我解决一个乱码问题>>>>>急急心急如火!
test1.html 内容如下:
<html>
<head>
<meta http-equiv= "content-type " content= "text/html; charset=utf-8 ">
</head>
<body>
<FORM action= "test2.jsp " method=post>
<INPUT type= "checkbox " name= "fruits " value= "Apple "> 苹果 <br>
<INPUT type= "checkbox " name= "fruits " value= "香蕉 "> 香蕉 <br>
<INPUT type= "checkbox " name= "fruits " value= "橘子 "> 橘子 <br>
<br>
<INPUT type= "submit " value= "确定 ">
</FORM>
</body>
</html>
test2.jps内容如下:
<%@ page language= "java " contentType= "text/html; charset=gb2312 " %>
<html>
<body>
<%
String[] picked = request.getParameterValues( "fruits ");
if(picked != null&&picked.length!=0){
%>
you have picked the following fruits:
<UL>
<%for(int i = 0; i < picked.length;i++){
String temp=new String( picked[i].getBytes( "iso-8859-1 "), "gb2312 ");
out.println( " <li> " + temp);
}
%>
</UL>
<%}%>
</body>
</html>
一点道理都没有啊,jsp中默认的接收的参数编码格式为 "iso-8859-1 "我现在把参数的 "iso-8859-1 "转换成 "gb2312 "因为我第一句指令设置了该页面有 "gb2312 "编码显示的.结果中文乱码,但如果把2.jsp中的: String temp=new String( picked[i].getBytes( "iso-8859-1 "), "gb2312 ");改成 String temp=new String( picked[i].getBytes( "iso-8859-1 "), "utf-8 ");则可以正常显示中文,请问是为什么呢?
------解决方案--------------------不用这么麻烦。
只要每个页面上的这四项声明统一,根本不用转码。
pageEncoding
charset
request Encoding
response Encoding
我一般喜欢全部在每一页面(JSP)显式声明为UTF-8.
因为“精打细算,还是UTF-8合算”。
这个是我自己以往项目中总结的,当然还参考了大量的网上信息。
但这种解决乱吗的成套方式,是俺独创的。嘿嘿。
当然了,你如果要显式在URL中传中文字符,当然也要显式生命URL Encoding为UTF-8(第五项显式声明)。
嘿嘿。第一次发表我的解决乱码的秘方。欢迎转载。
也就是说,一般情况下,四项声明统一就够用了。特殊情况下,需要第五项显式声明。
事情往往就是这么简单。试试吧。我刚学会安装fedora ,目前没有JSP运行环境。否则,给你
些个例子测试一下。
那么以后再有乱码又不属于这五种情况怎么办?好办,显式声明为UTF-8(当然要和其他几项显式声明统一)。
独家秘方哦。
哈哈。
------解决方案--------------------request.setEncoding( "GBK ")
------解决方案--------------------楼上正解
request.setEncoding( "GBK ")
将所有请求设置为统一的 GBK 能显示中文编码 是最常用的
也很简约
------解决方案--------------------you are dick