java的web開發中URLEncoder.encode方法


一: 我們先看2個編碼的情況

            String name=java.net.URLEncoder.encode("測試", "UTF-8");
            System.out.println(name);
            name=java.net.URLEncoder.encode(name,"UTF-8");
            System.out.println(name);
            name=java.net.URLDecoder.decode(name, "UTF-8");
            System.out.println(name);
            System.out.println(java.net.URLDecoder.decode(name, "UTF-8"));

輸出結果是
            %E6%B5%8B%E8%AF%95
            %25E6%25B5%258B%25E8%25AF%2595
            %E6%B5%8B%E8%AF%95
            測試

二; 我們來看編碼一次,提交給服務器的結果

我們吧“測試”編碼一次的字符串%E6%B5%8B%E8%AF%95  ,提交,服務器端用request.getParameter("name")的到參數,然后我們解碼

System.out.println(java.net.URLDecoder.decode(name, "UTF-8"));

我們發現得到的結果 ???è?  顯示亂碼。

因為在request.getParameter("name")之前會自動做一次解碼的工作,而且是默認的ISO-8859-1,相當於調用了一次java.net.URLDecoder.decode(name, "ISO-8859-1")

所以我們再用URLDecoder.decode(name, "UTF-8")就是亂碼了。

三: 我們在看編碼2次,提交給服務器的結果

編碼2次的字符串是%25E6%25B5%258B%25E8%25AF%2595 ,服務器端用request.getParameter("name")的到參數,自動按ISO-8859-1解碼得到的串是%E6%B5%8B%E8%AF%95  ,也就是編碼一次得到的字符串。

然后,我們在System.out.println(java.net.URLDecoder.decode(name, "UTF-8"));解碼輸出,得到的結果就是 “測試” 2個漢字。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM