日期:2014-05-18  浏览次数:20713 次

在线等待朋友帮我解决一个乱码问题>>>>>急急心急如火!
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