最近弄一東西,通過兩個方式向背景傳值(中文的),
一個通過方法傳值:
<a href="javascript:downLoad('幫助手冊.doc');" target="_blank" rel="external nofollow" >下載下傳</a>
然後function downLoad(path)中的urls這麼拼接:
var urls = "fileRouter!helpDocDownload.action?fileName=" + path+"×="+(new Date()).getTime();
另一個直接在方法裡寫死了:
var path= "幫助手冊.doc";
var urls = "fileRouter!helpDocDownload.action?fileName=" + path+"×="+(new Date()).getTime();
背景通過:request.getParameter("fileName")來取值。request也沒有設定CharacterEncoding屬性,拿到之後都是亂碼,通過fileName = new String(fileName.getBytes("ISO-8859-1"), "UTF-8");轉碼之後,火狐正常,IE不正常。要是改成:fileName = new String(fileName.getBytes("ISO-8859-1"), "GBK");IE正常火狐又不正常了。
後來在網上找資料,說加個encodeURI能解決,就在兩個地方都加了encodeURI:path=encodeURI(path),背景擷取之後雖然還是亂碼,但轉碼之後都正常了(轉成UTF-8格式)。
是以在這裡記錄一下,給自己做個備份!