JSP页面上传图片时出现的乱码

对于出现的乱码有2种解决方法:

1、在JS中,window.showModalDialog传递对象。
function  tool_uploadFile(clmNo,billType,maxFileNum,fileType,singleLimit,totalLimit)  {//解决乱码的问题,增加变量paramObj。10.06.01
    var paramObj = {
        
"clmNo" : clmNo,
        
"billType" : billType,
        
"maxFileNum" : maxFileNum,
        
"fileType" : fileType,
        
"singleLimit" : singleLimit,
        
"totalLimit" : totalLimit
    }
;
    
var r = window.showModalDialog(global.WEB_APP_NAME+"/core/jsp/common/uploadFile.jsp",paramObj,"dialogHeight:610px;dialogWidth:530px;center:1;help: 0; status: 0;");
    
return r;
}

在uploadFile.jsp中,通过js获得参数。
< script >
    
var  paramObj  =  window.dialogArguments;
    
var  clmNo  =  paramObj.clmNo;
    
var  billType  =  paramObj.billType;
    
var  maxFileNum  =  paramObj.maxFileNum;
    
var  fileType  =  paramObj.fileType;
    
var  singleLimit  =  paramObj.singleLimit;
    
var  totalLimit  =  paramObj.totalLimit;
    tool.loadApplet('
<%= agentIp %> ',' <%= agentPort %> ',' <%= orgId %> ',clmNo,billType,maxFileNum,fileType,singleLimit,totalLimit);    
  
</ script >


2、在JS中,window.showModalDialog通过?传递参数。
function  tool_uploadFile(clmNo,billType,maxFileNum,fileType,singleLimit,totalLimit)  {
    billType = encodeURIComponent(billType);
    var r = window.showModalDialog(global.WEB_APP_NAME+"/core/jsp/common/uploadFile.jsp?clmNo="+clmNo+"&billType="+billType+"&maxFileNum="+maxFileNum+"&fileType="+fileType+"&singleLimit="+singleLimit+"&totalLimit="+totalLimit,"","dialogHeight:610px;dialogWidth:530px;center:1;help: 0; status: 0;");
    
return r;
}

在uploadFile.jsp中,通过java解析获得参数。
String paramStr = request.getQueryString();
if  (paramStr  ==   null   ||  paramStr.equals( "" ))  {
    
return;
}


    HashMap
< String, ArrayList < String >>  parameter  =   new  HashMap < String, ArrayList < String >> ();
    
    String[] paramArr 
=  paramStr.split( " &+ " );
    String[] arr 
=   null ;
    
for  ( int  i  =   0 ; i  <  paramArr.length; i ++ {
        arr 
= paramArr[i].split("="2);
        ArrayList
<String> lst = parameter.get(arr[0]);
        
if (lst == null{
            lst 
= new ArrayList<String>();
            parameter.put(arr[
0], lst);
        }

        
if (arr.length < 2{
            lst.add(
"");
        }
 else {
            lst.add(URLDecoder.decode(arr[
1], "UTF-8"));
        }

    }

    
    ArrayList
< String >  paramlst  =  parameter.get( " billType " );
    String billType 
=  paramlst.get( 0 );


以上两种方法,对应用服务器设置的url编码没有关系。

还有一种方法,就是转换成GB2312,不过此种方法跟服务器编码设置还有关系,有时还会出现乱码:
billType = new String(billType.getBytes(" ISO-8859-1"),"GB2312");

你可能感兴趣的:(JSP页面上传图片时出现的乱码)