1 String  text1 = java.net.URLEncoder.encode("中国" ,"utf-8" );
2 String  text2 = java.net.URLDecoder.decode(text1,"utf-8"); 

(1).URLEncoder
需要注意:这个方法编码了符号,“\” ,“&”,“=”,和“:”,并把空格(“ ”)转换成了(+)。它不会尝试着去规定在一个URL中这些字符怎样被使用。由此,你不得不分块编码你的URL,而不是把整个URL一次传给这个方法。

  例如,假设你想编码这个string:

  pg=q&kl=XX&stype=stext&q=+"Java+I/O"&search.x=38&search.y=3

  这段代码对其进行编码:  

1 String query = java.net.URLEncoder.encode( "pg=q&kl=XX&stype=stext&q=+"Java+I/O"&search.x=38&search.y=3");
2
3 System.out.println(query);

  不幸的是,得到的输出是:

  pg%3Dq%26kl%3DXX%26stype%3Dstext%26q%3D%2B%22Java%2BI%2FO%22%26search.x%3D38%26search.y%3D3

  出现这个问题就是方法URLEncoder.encode( ) 在进行盲目地编码。它不能区分在URL或者查询string中被用到的特殊字符(像前面string中的“=”,和“&”)和确实需要被编码的字符。所以URL需要一次只编码一块。

  例如正确的拼接方法:
  

 1 private static String _MakeURL(String p_url, Map<String, Object> params) throws UnsupportedEncodingException {
 2            StringBuilder url = new StringBuilder(p_url);
 3             // Strng.indexOf(substring) //搜索String中的substring,默认从0位开始;
 4
 5             if(url.indexOf( "?")<0)
 6                 url.append( '?');
 7
 8             for(String name : params.keySet()){
 9                 url.append( '&');
10                 url.append(name);
11                 url.append( '=');
12                  //url.append(String.valueOf(params.get(name)));
13                  //做URLEncoder处理
14                 url.append(URLEncoder. encode(String.valueOf (params.get(name)), "UTF-8"));
15            }
16
17             return url.toString().replace( "?&", "?");
18      }

 
(2).URLDecoder
  注意:由于这个方法没有触及到非转义字符,所以你可以把整个URL作为参数传给该方法<如下面的qerry>。不用像之前那样分块进行,依然可以得到你想要的正确的解码结果。例如:
  

1   String input = "http://www.altavista.com/cgi-bin/"+"qerry?pg=q&kl=XX&stype=stext&q=%2B%22Java+I%2FO%22&search.x=38&search.y=3";  
2     try {  
3          String output = java.net.URLDecoder.decode(input, "UTF-8");  
4          System.out.println(output); 
5      }  

 
综上所述:UrlEncoder一次只能编码一块,然后拼接起来,成为一个url ; 而UrlDecoder可以一次性解码整个链接。

转载于:https://www.cnblogs.com/wufeng0927/p/5335367.html

URLEncode编码和URLDecode解码相关推荐

  1. Python urlencode编码和urldecode解码

    Python3 urlencode编码和urldecode解码分别用到了urllib.parse.quote和urllib.parse.unquote. import urllib.parse fon ...

  2. python 中的 urlencode 编码与 urldecode 解码

    文章目录 脚本示例 运行结果 脚本示例 在 python 中进行 UrlEncoded 与 UrlDecode 操作需要导入 urllib 相关函数库: import urllib.parse 脚本示 ...

  3. java urlencode 解码_java.net.URLEncode编码 与 URLDecode解码问题

    网页中的表单使用POST方法提交时,数据内容的类型是 application/x-www-form-urlencoded,这种类型会: 1.字符"a"-"z", ...

  4. 怎么进行:URLEncode编码 与 URLDecode解码

    该方法要求你自己指定编码形式.这两个类都不用初始化: public class URLDecoder extends Object public class URLEncoder extends Ob ...

  5. 在线UrlEncode编码和UrlDecode解码(#用%23代替)

    http://www.urlencode.com.cn/ #号可以用%23代替

  6. java.net.URLEncode编码 与 URLDecode解码问题

    原文:http://blog.csdn.net/luojian520025/article/details/9139293 -------------------------------------- ...

  7. asp页面和Asp.net页面传中文参数UrlEncode编码以及接收解码

    在asp中加一个链接,指向asp.net网页,但asp.net的网址是经过HttpUtility.UrlEncode转换和HttpUtility.UrlDecode解码的,而asp的server.ur ...

  8. php url编码原理,urlencode编码/urldecode解码作用及使用方法

    urlencode和urldecode释义 urlencode是一个函数,可将字符串以URL编码,用于编码处理. URL编码(URL encoding),也称作百分号编码(Percent-encodi ...

  9. JS javascript实现url编码和url解码(urlEncode urlDecode)

    本文转自:JS javascript实现url编码和url解码(urlEncode urlDecode)  转载请保留. 表单通过get方式提交中文数据时,提交的中文会被转化为类似"%CC% ...

最新文章

  1. INADDR_ANY的理解
  2. fileviewfinder.php,Laravel在FileViewFinder.php中查找视图的错误处理程序
  3. java怎么表示10 2_java -Xmx1G是否表示10 ^ 9或2 ^ 30字节?
  4. 神策 FM | 20 种方法,让你成为用户的知心朋友
  5. great sentences for university sentences
  6. Thrift异步IO服务器源码分析
  7. IDEA overwrite报错、languagelevel设置不生效问题
  8. VSCode摸鱼插件 — FreeWindow
  9. Spring Boot(3)---Spring Boot入门:系统要求
  10. 2021年行政区划代码(含经纬度)mysql库
  11. 微信小程序短视频去水印解析
  12. 金融、银行业务了解(自我盲点整理)
  13. EXCEL-日常技巧整理-2-单元格拆分后原数据填充
  14. 理解Monitor监视器锁原理
  15. avr 74hc595驱动数码管动态显示c语言例程,一种电梯钢丝绳张力计控制系统软件的设计...
  16. 51单片机串口通信(自动发送)
  17. Lotus Notes 7.0找不到服务器路径
  18. 资料分享:送你一本《C#区块链编程》电子书!
  19. latex中文小标题_LaTeX标题怎样使用中文?
  20. 治疗脱发需要多少钱?如何选择合适的治疗方案?

热门文章

  1. 讲讲volatile的作用
  2. Server2012R2 ADFS3.0 The same client browser session has made '6' requests in the last '13'seconds
  3. 如何使用Gitbook创建html技术文档
  4. 初学Vue.js,从头来过~
  5. Java高级篇(二)——网络通信
  6. 对特朗普获胜感到意外? 那你是被社交媒体迷惑了
  7. [置顶]tcpflow 抓包
  8. 魅族MX4的线控电路图
  9. 理解UI线程——SWT, Android, 和Swing的UI机理
  10. HDOJ 1228 A+B(map水题)