ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

URL编码解码

2021-04-07 11:29:59  阅读:510  来源: 互联网

标签:编码 java URL hexString 解码 bytes


package demo.network.other;

import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.util.Arrays;

class URL编码解码 {
    public static void main(String[] args) throws UnsupportedEncodingException {
        byte[] bytes = "你好".getBytes("UTF-8");
        System.out.println("UTF-8:" + Arrays.toString(bytes));//[-28, -67, -96, -27, -91, -67]
        String URLCode = URLEncoder.encode("你好", "UTF-8");
        System.out.println("URL编码:" + URLCode);//%E4%BD%A0%E5%A5%BD
        System.out.println("URL解码:" + URLDecoder.decode(URLCode, "UTF-8"));//你好

        //自定义 转化UTF-8编码字节 为 URL编码
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < bytes.length; i++) {
            bytes[i] += 256;
            String hexString = Integer.toHexString(bytes[i]);//ffffffe4
            hexString = hexString.substring(hexString.length() - 2, hexString.length());//e4
            hexString = hexString.toUpperCase();//E4
            sb.append("%" + hexString);
        }
        System.out.println(sb);//%E4%BD%A0%E5%A5%BD
    }
}
/**
 * 3. URL编码
 *   表单的类型:Content-Type: application/x-www-form-urlencoded,就是把中文转换成%后面跟随两位的16进制。
 *   为什么要用它:在客户端和服务器之间传递中文时需要把它转换成网络适合的方式。
 * <p>
 *   * 它不是字符编码!
 *   * 它是用来在客户端与服务器之间传递参数用的一种方式!
 *   * URL编码需要先指定一种字符编码,把字符串解码后,得到byte[],然后把小于0的字节+256,再转换成16进制。前面再添加一个%。
 *   * POST请求默认就使用URL编码!tomcat会自动使用URL解码!
 *   * URL编码:String username = URLEncoder.encode(username, "utf-8");
 *   * URL解码:String username = URLDecoder.decode(username, "utf-8");
 * <p>
 *   今后我们需要把链接中的中文参数,使用url来编码!今天不行,因为html中不能给出java代码,但后面学了jsp就可以了。
 */

标签:编码,java,URL,hexString,解码,bytes
来源: https://blog.csdn.net/New_new_zero/article/details/115481572

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有