url編碼與解碼


只有 0-9[a-Z] $ - _ . + ! * ' ( ) , 以及某些保留字,才能不經過編碼直接用於 URL

java對url編碼/解碼

編碼 解碼 說明
URLEncoder.encode(原始url, 字符集) URLDecoder.decode(已編碼的url, 字符集)
  • 舉個栗子
    public static void main(String[] args) throws UnsupportedEncodingException {

        //編碼前
        String decodeStr = "http://www.baidu.com?param=測試";
        //編碼后
        String encodeStr = "http%3A%2F%2Fwww.baidu.com%3Fparam%3D%E6%B5%8B%E8%AF%95";


        //java 編碼
        String encode = URLEncoder.encode(decodeStr, "utf-8");
        System.out.println(encode);//結果:http%3A%2F%2Fwww.baidu.com%3Fparam%3D%E6%B5%8B%E8%AF%95
        System.out.println(encode.equals(encodeStr));//結果:true

        System.out.println("-------------");
        //java解碼
        String decode = URLDecoder.decode(encodeStr, "utf-8");
        System.out.println(decode);//結果:http://www.baidu.com?param=測試
        System.out.println(decode.equals(decodeStr));//結果:true

    }

js對url編碼/解碼

編碼 解碼 說明
escape(原始url) unescape(已編碼的url) 函數出現時間:javascript 1.0
encodeURI(原始url) decodeURI(已編碼的url) 函數出現時間:javascript 1.5
encodeURIComponent(原始url) decodeURIComponent(已編碼的url) 函數出現時間:javascript 1.5
  • escape
  • 采用ISO Latin字符集對指定的字符串進行編碼
  • 對除ASCII字母、數字、標點符號 @ * _ + - . / 以外的其他字符進行編碼
  • 解碼使用unescape
  • encodeURI
  • 把URI字符串采用UTF-8編碼格式轉化成escape格式的字符串
  • 返回編碼為有效的統一資源標識符 (URI) 的字符串,不會被編碼的字符:! @ # $ & * ( ) = : / ; ? + '
  • 解碼使用decodeURI
  • encodeURIComponent
  • 把URI字符串采用URF-8編碼格式轉化成escape格式的字符串,與encodeURI相比,這個函數會將更多的字符進行編碼,比如"/"等字符
  • 對URL的組成部分進行個別編碼,而不用於對整個URL進行編碼,不會被此方法編碼的字符:! * ( )
  • 解碼使用decodeURIComponent
  • 舉個栗子

        //原始url
        var oriUrl = "http://www.baidu.com?param=測試";
        
        //js三種方式編碼
        var escapeUrl = escape(oriUrl);
        var encodeUrl = encodeURI(oriUrl);
        var encodeComponentUrl = encodeURIComponent(oriUrl);

        //輸出結果
        console.log(escapeUrl);//結果:http%3A//www.baidu.com%3Fparam%3D%u6D4B%u8BD5
        console.log(encodeUrl);//結果:http://www.baidu.com?param=%E6%B5%8B%E8%AF%95
        console.log(encodeComponentUrl);//結果:http%3A%2F%2Fwww.baidu.com%3Fparam%3D%E6%B5%8B%E8%AF%95

        console.log("-------");

        //對應的三種方式解碼
        console.log(unescape(escapeUrl));//結果:http://www.baidu.com?param=測試
        console.log(decodeURI(encodeUrl));//結果:http://www.baidu.com?param=測試
        console.log(decodeURIComponent(encodeComponentUrl));//結果:http://www.baidu.com?param=測試


免責聲明!

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



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