package com.bijian.url; import java.io.UnsupportedEncodingException; public class URLEncodeTest { public static void main(String[] args) { String str = "栢莱哈希"; try { //编码 String gb2312 = java.net.URLEncoder.encode(str, "GB2312"); //解码 String gb2312_res = java.net.URLDecoder.decode(gb2312, "GB2312"); System.out.println("gb2312:" + gb2312); System.out.println("gb2312_res:" + gb2312_res); //编码 String gbk = java.net.URLEncoder.encode(str, "GBK"); //解码 String gbk_res = java.net.URLDecoder.decode(gbk, "GBK"); System.out.println("gbk:" + gbk); System.out.println("gbk_res:" + gbk_res); //编码 String utf8 = java.net.URLEncoder.encode(str, "utf-8"); //解码 String utf8_res = java.net.URLDecoder.decode(utf8, "utf-8"); System.out.println("utf8:" + utf8); System.out.println("utf8_res:" + utf8_res); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
运行结果:
gb2312:%3F%C0%B3%B9%FE%CF%A3 gb2312_res:?莱哈希 gbk:%96%E0%C0%B3%B9%FE%CF%A3 gbk_res:栢莱哈希 utf8:%E6%A0%A2%E8%8E%B1%E5%93%88%E5%B8%8C utf8_res:栢莱哈希
发现gb2312编码解码后出现了乱码。
这是因为:GBK是GB2312的一个超集,也就是说GB2312里的字GBK里都有,GBK里有的,GB2312未必有。有些生辟字在GBK里有,GB2312就没有了。
评论