位址列中出現漢字的情況有兩種

2021-07-09 02:35:54 字數 785 閱讀 4169

位址列中出現漢字的情況有兩種,一種是漢字出現在url的路徑部分,一種是漢字出現在url的傳參的部分,第二種情況的時候必須採用編碼後傳參,接受時解碼的方式完成傳參。js中編碼有escape(),encodeuri(),encodeuricomponent()三個常用的方法,escape()常常用在提交頁面和處理頁面的編碼格式相同的情況下(比如它們都是gb2312),encodeuri()和encodeuricomponent()的用法基本相同,區別在於encodeuricomponent()也對"?"等特殊字元進行編碼。

發現原來,是escape()方法造成了異常,同時了解了瀏覽器傳遞位址的一些原理,在瀏覽器位址列裡,瀏覽器認為%是個轉義字元,瀏覽器會把%與%之間的編碼,兩位兩位取出後進行解碼,然後再傳遞給處理頁面,

然後由處理頁面進行再次解碼。由此我想到一直使用encodeuri方法是正確的,只是需要使用兩次encodeuri方法,例如encodeuri(encodeuri("中文"));第一次是把中文編碼成%xy的格式,

第二次是對%xy中的%進行編碼,%籂亥焚酵蒔寂鋒檄福漏編碼成%。整個傳參過程大體應該是:提交頁面使用encodeuri(encodeuri("中文"))編碼,把最後的編碼結果%xy傳遞給處理頁面的過程中,瀏覽器獲取url位址

(注意openmodeldialog方法,瀏覽器獲取不到引數編碼)後解碼成%xy,然後把%xy傳遞給處理頁面,處理頁面使用urldecoder.decode(request.getparameter("引數名"),"utf-8");完成解碼。

總結:1、漢字出現在url路徑部分的時候不需要編碼解碼;

關於位址列裡的

url中的hash 代表網頁中的乙個位置,其右邊的字元,就是該位置的識別符號。比如 就是代表index.html中的print位置。瀏覽器會自動把print位置滾動到頁面可視區域內。設定方法 href print 定位到print位置a print div 號是用來指導瀏覽器動作的,對伺服器端完全無...

如何獲取位址列 號前面的引數和位址列最後的引數

外部跳轉vue專案時自帶引數,例如 http 1.外部進入的url會放在vue專案編譯以後自動加 其中帶的引數在 之前 那麼我們只能用js的方法來獲取 var url window.location.href 獲取當前url var dz url url.split 0 獲取 之前的字串 var c...

獲取url位址列的引數

獲取url位址列的引數 var url window.location.href var index url.substring url.lastindexof 1 1 window.location.href 整個url字串 在瀏覽器中就是完整的位址列 2 window.location.prot...