断点

每天进步一点点!
posts - 174, comments - 56, trackbacks - 0, articles - 21

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

Posted on 2010-06-01 19:22 断点 阅读(604) 评论(0)  编辑  收藏 所属分类: JScript
对于出现的乱码有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");

只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问