• URLEncoder编码


    客户端在进行网页请求的时候,网址中可能会包含非ASCII码形式的内容,比如中文。

    而直接把中文放到网址中请求是不允许的,所以需要用URLEncoder编码地址,

    将网址中的非ASCII码内容转换成可以传输的字符

    不会被编码的内容

    1.大写字母A-Z

    2.小写字母a-z

    3.数字 0-9

    4.标点符 - _ . ! ~ * ' (和 ,)

    二、编码原理

    1、将需要转换的内容(ASCII码形式之外的内容),用十六进制表示法转换出来,并在之前加上%开头

    eg:  0x9c  URLEncoder --> %9c

    2、内容中的空格‘ ’ ,全部用+代替

    3、注:与Hex不同,Hex是将所有的字符转换为16进制表示,而URLEncoder是将ASCII码集之外的转换为%加上相应的16进制,而ASCII码集内的字符不进行处理

    三、应用场景

    1、所有的GET请求

    2、网址中有中文等情况

    3、POST请求,所有的Key和Value在提交之前都要经过URLEncoder

    四、示例

    try {
        String a = URLEncoder.encode("a", "UTF-8");
        Log.i("encode","a 进行URLEncoder编码后-->"+a );
        String b = URLEncoder.encode("a中", "UTF-8");
        Log.i("encode","a中 进行URLEncoder编码后-->"+b );
    
        String decode = nURLDecoder.decode("a%E4%B8%AD", "UTF-8");
        Log.i("encode","a%E4%B8%AD 进行URLDecoder解码后-->"+decode);
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    }

    运行结果:

    10-17 07:33:14.357 1012-1012/com.xqx.encrypsthow I/encode﹕ a 进行URLEncoder编码后-->a
    10-17 07:33:14.367 1012-1012/com.xqx.encrypsthow I/encode﹕ a中 进行URLEncoder编码后-->a%E4%B8%AD
    10-17 07:33:14.377 1012-1012/com.xqx.encrypsthow I/encode﹕ a%E4%B8%AD 进行URLDecoder解码后-->a中

  • 相关阅读:
    利用Java API通过路径过滤上传多文件至HDFS
    docker-compose部署haproxy
    PM2 常用命令
    shell脚本循环访问url直到状态码返回200跳出循环
    CentOS 7.6安装配置Chrony同步系统时钟
    PostgreSQL9.5数据库锁表问题分析与解决
    linux系统netstat命令详解(netstat常用运维命令)
    linux目录备份脚本
    PostgreSQL 锁等待监控 珍藏级SQL
    docker部署pgadmin4并通过nginx反向代理
  • 原文地址:https://www.cnblogs.com/bimingcong/p/5663781.html
Copyright © 2020-2023  润新知