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=测试

转载于:https://www.cnblogs.com/itmacy/p/11328091.html

代码最好是使用 WonderWall 编译,  代码都没有转为置入代码,  只提供了由 WonderWall 生成的十六进制数据, 可以自己转为置入代码 所有代码都使用 WonderWall 标准格式, 方便修改和检查。 跳转标签 老夫刚开始偷懒,  统一用了 @tag+序号,  最后发现,  代码多了看的就眼花了。 三个子程序里面都有备注,还说了点关于字节集的一些说明, 可以看看。 代码写的虽然仓促,  但还是比较靠谱。 如果使用中遇到问题,  欢迎反馈。 有啥不足,也欢迎指教。 测试使用了,0-9,a-z,A-Z,中英文符号,空格,换行符,中文。 所有代码都中使用的 "非易失性寄存器" 都有备份,"易失性寄存器" 都忽略了。 所有的局部变量都没删除,自己申请,这样为了方便改错。你也可以自行修改。这并不会影响速度,易语言自己生成的基本就是和你修改的一模一样。 另外如果你有啥好的算法,  想翻译为汇编的, 欢迎跟帖,  贴出算法,  我会抽时间帮你们怼一怼。 再者贴出的代码限 C/C++ 易语言 或 php 那样无法提升多少速度的代码,就别发了,转汇编纯粹浪费时间。没有多大的提升那就是闲的蛋疼的。 另外提醒: 不管拿到谁的代码, 先都大致过一遍。 别人有啥备注说明啥的都先看看, 也检查一下是否有乱七八糟的代码。 就算看不懂代码,你也可以看看注释,看看有没有什么敏感的东西。 别特么什么代码都拿起来就运行。 自己检查一下也有相对应的安全, 也是尊重作者写的代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值