URL编码解码

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就可以了。
 */
上一篇:查找SHA1值


下一篇:Java中二进制字节与十六进制互转