该方法要求你自己指定编码形式。这两个类都不用初始化:

  public class URLDecoder extends Object

  public class URLEncoder extends Object

String   text1  =   java.net.URLEncoder.encode("中国",   "utf-8");   
        String   text2   =   java.net.URLDecoder.decode(text1,   "utf-8");   
    
  这两条语句在同一个页面中的话,得到的结果是:   
  text1:   %E4%B8%AD%E5%9B%BD     
  tex2:   中国  
  
  String  China=new      String(request.getParameter("China").getBytes("iso8859_1"));   
  China=java.net.URLDecoder.decode(zhongguo,"utf-8");

                                                    一、URLEncoder

java提供了一个类URLEncoder把string编码成这种形式。Java1.2增加了一个类URLDecoder它能以这种形式解码string。这个方法之前总是用它所在平台的默认编码形式,所以在不同系统上,它就会产生不同的结果。但是在java1.4中,这个方法被另一种方法取代了。
特别需要注意的是这个方法编码了符号,“\” ,“&”,“=”,和“:”,并把空格(“ ”)转换成了(+)。它不会尝试着去规定在一个URL中这些字符怎样被使用。由此,你不得不分块编码你的URL,而不是把整个URL一次传给这个方法。这是很重要的,因为对类URLEncoder最通常的用法就是查询string,为了和服务器端使用GET方式的程序进行交互。

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

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

  这段代码对其进行编码:

  String query = java.net.URLEncoder.encode( "pg=q&kl=XX&stype=stext&q=+"Java+I/O"&search.x=38&search.y=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需要一次只编码一块。

                                                         二、URLDecoder

与URLEncoder 类相对应的URLDecoder 类有两种静态方法。它们解码以x-www-form-url-encoded这种形式编码的string。也就是说,它们把所有的加号(+)转换成空格符,把所有的%xx分别转换成与之相对应的字符:

public static String decode(String s) throws Exception  public static String decode(String s, String encoding) // Java 1.4 throws UnsupportedEncodingException

如果string包含了一个“%”,但紧跟其后的不是两位16进制的数或者被解码成非法序列,该方法就会抛出IllegalArgumentException 异常。当下次再出现这种情况时,它可能就不会被抛出了。这是与运行环境相关的,当检查到有非法序列时,抛不抛出IllegalArgumentException 异常,这时到底会发生什么是不确定的。在Sun's JDK 1.4中,不会抛出什么异常,它会把一些莫名其妙的字节加进不能被顺利编码的string中。这的确令人头疼,可能就是一个安全漏洞。

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

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";  
try {  String output = java.net.URLDecoder.decode(input, "UTF-8");  System.out.println(output); }

怎么进行: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解码

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

  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. 1.为什么要学习MATLAB
  2. JS实现图片预览与等比缩放
  3. Linux C/C++ Openssl RSA Encrypt/Decrypt(加密/解密) 简单示例教程
  4. python父进程调用子进程_Python2.7下,调用subprocess启动子进程,读取子进程标准输出若干问题...
  5. JavaScript 学习提升
  6. wav2midi 音乐旋律提取算法 附可执行demo
  7. Mysql5换成Mysql8之后报错java.lang.ClassNotFoundException: com.mysql.jdbc.driver的问题解决
  8. php smarty 语法,php之Smarty根本语法和三大变量
  9. 2019年上半年计算机水平,2019年上半年全国计算机等级考试通过秘诀分享
  10. 国家计算机考试报名照片编辑器,Artensoft Photo Editor(电脑照片编辑软件) V1.5 官方版...
  11. php新年倒计时源码,新年倒计时源码
  12. 【RFC3449 网络路径不对称对 TCP 性能的影响】(翻译)
  13. 厘米与像素的单位转换
  14. 【Oracle】TYPE定义的数据类型
  15. XE中FMX操作ListBox,添加上千条记录(含图片)
  16. SLAM闲谈(一)--词袋模型
  17. 第六届高分子材料国际研讨会(PMS-BT 2019)
  18. 兄弟hl3150cdn打印测试页6_兄弟3150CDN彩色激光打印机
  19. 小心看上去平平无奇的陷阱:如何防范高级渣?
  20. ppt形状html,PPT如何才能高大上?“形状”在PPT有这些妙用

热门文章

  1. 轻量级的开源代理服务器Tinyproxy安装与配置
  2. Blender 3D 打印插件Print Toolbox
  3. Unity接入 阿里云OSS 腾讯云Cos的SDK,实现上传文件功能
  4. mkfifo命名管道+fork实现文件拷贝
  5. win7计算机里网络共享没有,怎么找不到共享电脑,教您局域网中共享电脑找不到怎么办...
  6. 弘辽科技:微信小程序嵌入小红书 GUCCI纪梵希YSL尝鲜“化公为私”
  7. bcrypt java maven_BCrypt 密码加密
  8. .NET Framework各个版本下载官网
  9. #python# 成语接龙(一)
  10. mysql是什么数据_了解MySQL数据页吗?说说什么是页分裂吧!