Posted on 2008-02-04 00:21
skycity 閱讀(603)
評論(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函數(shù)的不熟悉,找了很久才找到了一個encodeURI函數(shù),使用encodeURI函數(shù)后,地址欄地址轉換成類似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
只要確認各個轉發(fā)的頁面都設置成UTF-8,則最后得到的deptname為“湛江市公安局"
Lyyb2001