• 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=测试
    
    
  • 相关阅读:
    卸载IE
    js判断是否是object、array
    正则表达式中/i,/g,/ig,/gi,/m的区别和含义
    谷歌地图控制圆圈随缩放自适应大小 js
    WGS84坐标转换GCJ02坐标 JS实现
    Google图片和NASA 网站图片的爬虫
    Yolov_3 网络结构分析
    启动Tensorboard时发生错误:class BeholderHook(tf.estimator.SessionRunHook): AttributeError: module 'tensorflow.python.estimator.estimator_lib' has no attribute 'SessionRunHook'
    MyBatis -- generator 逆向工程
    bat使用方法汇总
  • 原文地址:https://www.cnblogs.com/itmacy/p/11328091.html
Copyright © 2020-2023  润新知