為什么網上會有人提出在客戶端對字符串重復編碼兩次呢.
2023-04-12
var url="/demo/login.do?userName="+userName+"&pwd="+pwd;
url=encodeURI(url);
url=encodeURI(url);
為什么網上會有人提出在客戶端對字符串重復編碼兩次呢.
如果因為項目需要,不能指定容器使用何種編碼規(guī)則來解碼提交的參數(shù), 比如:需要接收來自不同頁面,不地編碼的參數(shù)內容時。 (又或者是開發(fā)人員被這有點復雜的東東搞得暈頭轉向,不懂得如何正確的去做好這接收參數(shù)的工作)
這個時候,在客戶端對參數(shù)進行二次編碼,可以有效的避開“提交多字節(jié)字符”的這個棘手問題。
因為第一次編碼,你的參數(shù)內容便不帶有多字節(jié)字符了,成了純粹的 Ascii 字符串。(這里把編第一次的結果叫成 [STR_ENC1] 好了。[STR_ENC1] 是不帶有多字節(jié)字符的)
再編一次后,提交,接收時容器自動解一次(容器自動解的這一次,不管是按 GBK 還是 UTF-8 還是 ISO-8859-1 都好,都能夠正確的得到 [STR_ENC1])
然后,再在程序中實現(xiàn)一次 decodeURIComponent (Java中通常使用 java.net.URLDecoder.decode(***, "UTF-8")) 就可以得到想提交的參數(shù)的原值。
本文僅代表作者觀點,版權歸原創(chuàng)者所有,如需轉載請在文中注明來源及作者名字。
免責聲明:本文系轉載編輯文章,僅作分享之用。如分享內容、圖片侵犯到您的版權或非授權發(fā)布,請及時與我們聯(lián)系進行審核處理或刪除,您可以發(fā)送材料至郵箱:service@tojoy.com





