Posted on 2008-02-04 00:21
skycity 阅读(596)
评论(0) 编辑 收藏 所属分类:
AJAX
在我的应用中,所有的jsp都设置成了UTF-8编码。deptList.jsp中的javascript如下:
<script language="javascript">
function _addDept(id,deptName)
{
if(id==null || id==''){
alert("请选择一个父部门");
return false;
}else{
//window.open("/deptMenuTree.do?method=oaAddDept&deptId="+id+"&deptName="+deptName,null,null);
modelJsp("/deptMenuTree.do?method=oaAddDept&deptId="+id+"&deptName="+deptName,"/deptMenuTree.do?method=showDeptMenu",600,450);
}
}
function modelJsp(url,freshurl,w,h){
var len = url.indexOf("?");
url= url.replace(/\&/g,"i~~~~~~~~~ewislkdfwe934ksdfsdfslf");
var Params = new Array(window,freshurl,parent.menuTree);
var retValues=window.showModalDialog("/pages/common/ModelJsp.jsp?suntekModeJspUrl="+url, Params, "dialogHeight:" + h + "px; dialogWidth:" + w + "px; center: Yes; help: No; resizable: No; status: No;");
if(retValues!=null){
return retValues;
}
else{
return null;
}
}
</script>
此时弹出窗口的地址栏中为:
http://localhost/pages/common/ModelJsp.jsp?suntekModeJspUrl=/deptMenuTree.do?method=oaAddDepti~~~~~~~~~ewislkdfwe934ksdfsdfslfdeptId=0003i~~~~~~~~~ewislkdfwe934ksdfsdfslfdeptName=湛江市公安局
最后得到的deptname乱码了,显示?????????
使用了escape,地址栏为:
http://localhost/pages/common/ModelJsp.jsp?suntekModeJspUrl=/deptMenuTree.do%3Fmethod%3DoaAddDepti%7E%7E%7E%7E%7E%7E%7E%7E%7Eewislkdfwe934ksdfsdfslfdeptId%3D0003i%7E%7E%7E%7E%7E%7E%7E%7E%7Eewislkdfwe934ksdfsdfslfdeptName%3D%u6E5B%u6C5F%u5E02%u516C%u5B89%u5C40
明显得不到所需要的部门名
在JAVA中可以使用java.net.URLEncoder.encode (Joho,"UTF-8")%>">
但此处为了不再新的窗口打开输入窗口,所以编码的方式要放在javascript中。由于对javascript函数的不熟悉,找了很久才找到了一个encodeURI函数,使用encodeURI函数后,地址栏地址转换成类似MSN的地址
http://localhost/pages/common/ModelJsp.jsp?suntekModeJspUrl=/deptMenuTree.do?method=oaAddDepti~~~~~~~~~ewislkdfwe934ksdfsdfslfdeptId=0003i~~~~~~~~~ewislkdfwe934ksdfsdfslfdeptName=%E6%B9%9B%E6%B1%9F%E5%B8%82%E5%85%AC%E5%AE%89%E5%B1%80
只要确认各个转发的页面都设置成UTF-8,则最后得到的deptname为“湛江市公安局"
Lyyb2001