URLEncoder和URLDecoder
来源:互联网 发布:linux下禁止ping 编辑:程序博客网 时间:2024/06/05 03:28
URLEncoder和URLDecoder
例子1::
最近编程序到一个问题,就是要把汉字转换成UTF-8编码。一想到编码,我的头就大了,各种各样的码,转来转去的,为什么就不能统一下呢?闲话少说,其实这种问题看似复杂,但只要找到了合适的类,其它事情小菜一碟了。那么合适的类到底是什么呢?就是URLEncoder和URLDecoder。这两个类使用十分方便,因为它们各自只有一个方法,而且都是静态方法(详细信息参见jdk文档)。下面是我稍加封装后的新类。
- importjava.io.UnsupportedEncodingException;
- importjava.net.URLDecoder;
- importjava.net.URLEncoder;
- publicclassChineseToUTF8{
- publicstaticStringEncode(Stringchinese)throwsUnsupportedEncodingException
- {
- StringnewStr=URLEncoder.encode(chinese,"utf8");
- returnnewStr;
- }
- publicstaticStringDecode(Stringutf8)throwsUnsupportedEncodingException:
- System.out.println(Encode("分辨率"));
- System.out.println(Decode(Encode("分辨率")));
- }
- }
运行结果:
- %E5%88%86%E8%BE%A8%E7%8E%87
- 分辨率
从运行结果可以看出,UTF-8把每一个汉字转换成了3个十六进制数,中间用%分开。
例子2:
- public static void main(String[] args) throws UnsupportedEncodingException {
- String url = "http://www.baidu.com?a=b&b=c&abc=你好";
- String en = URLEncoder.encode(url, "UTF-8");
- System.out.println(en);
- String decode = URLDecoder.decode(en, "UTF-8");
- System.out.println(decode);
- String decode2 = URLDecoder.decode(decode, "UTF-8");
- System.out.println(decode2); //2次decode不会再变化
- String es = HtmlUtils.htmlEscapeDecimal(url);
- System.out.println(es); //没有html的特殊符号,不会有变化
- String esen = HtmlUtils.htmlEscapeDecimal(en);
- System.out.println(esen);
- // http%3A%2F%2Fwww.baidu.com%3Fa%3Db%26b%3Dc%26abc%3D%E4%BD%A0%E5%A5%BD
- // http://www.baidu.com?a=b&b=c&abc=你好
- // http://www.baidu.com?a=b&b=c&abc=你好
- // http://www.baidu.com?a=b&b=c&abc=你好
- // http%3A%2F%2Fwww.baidu.com%3Fa%3Db%26b%3Dc%26abc%3D%E4%BD%A0%E5%A5%BD
- }
结论:
1 URLEncoder 会把中文编码为 %ab% 这样的格式,防止中文乱码
2 URLDecoder 解码恢复原样后,继续解码,字符串并不会有别的改变
3 HtmlUtils 用于有html特殊的字符转换成转义字符,如 & 转成   等, 如不转换这浏览器解析会出现错误
注意 当对 http:// 进行encode后,浏览器将把它识别为相对路径,而非绝对路径
- public static void main(String[] args) throws UnsupportedEncodingException {
- String url = "http://www.baidu.com?a=b&b=c&abc=你好";
- String en = URLEncoder.encode(url, "UTF-8");
- System.out.println(en);
- String decode = URLDecoder.decode(en, "UTF-8");
- System.out.println(decode);
- String decode2 = URLDecoder.decode(decode, "UTF-8");
- System.out.println(decode2); //2次decode不会再变化
- String es = HtmlUtils.htmlEscapeDecimal(url);
- System.out.println(es); //没有html的特殊符号,不会有变化
- String esen = HtmlUtils.htmlEscapeDecimal(en);
- System.out.println(esen);
- // http%3A%2F%2Fwww.baidu.com%3Fa%3Db%26b%3Dc%26abc%3D%E4%BD%A0%E5%A5%BD
- // http://www.baidu.com?a=b&b=c&abc=你好
- // http://www.baidu.com?a=b&b=c&abc=你好
- // http://www.baidu.com?a=b&b=c&abc=你好
- // http%3A%2F%2Fwww.baidu.com%3Fa%3Db%26b%3Dc%26abc%3D%E4%BD%A0%E5%A5%BD
- }
结论:
1 URLEncoder 会把中文编码为 %ab% 这样的格式,防止中文乱码
2 URLDecoder 解码恢复原样后,继续解码,字符串并不会有别的改变
3 HtmlUtils 用于有html特殊的字符转换成转义字符,如 & 转成   等, 如不转换这浏览器解析会出现错误
注意 当对 http:// 进行encode后,浏览器将把它识别为相对路径,而非绝对路径
0 0
- URLEncoder 和 URLDecoder
- URLEncoder和URLDecoder
- URLDecoder 和URLEncoder类
- 使用URLDecoder和URLEncoder
- URLDecoder和URLEncoder
- URLEncoder和URLDecoder
- UrlEncoder和UrlDecoder
- 关于URLEncoder和URLDecoder
- URLEncoder和URLDecoder类
- URLEncoder和URLDecoder
- URLEncoder和URLDecoder
- URLDecoder 和 URLEncoder
- 类URLEncoder 和 类URLDecoder
- 编码 URLEncoder 和 解码 URLDecoder
- Java URLDecoder 和 URLEncoder 用法
- 编码 URLEncoder 和 解码 URLDecoder
- Android 中的URLEncoder和URLDecoder
- URLDecoder,URLEncoder
- 播布客教学视频_C学习笔记_10.2_约瑟夫环问题(数组链表)
- 【Android开发经验】<Activity>标签下常见属性介绍
- C语言:猜数游戏
- 使用 Docker 构建开发、测试环境
- Oracle那些不常用的SQL
- URLEncoder和URLDecoder
- 分享5个可视化的正则表达式编辑工具
- CMake设置生成vs工程的动态库输出路径
- VC 定时提醒自己休息
- Radix Heap ---Dijkstra算法的优化 BY Gremount
- An easy problem
- java开源
- java/android下的并发编程
- [cpp,algorithm,fpTree] FPTree_1_从文件中读取数据集并将其解析