怎么进行:URLEncode编码 与 URLDecode解码
该方法要求你自己指定编码形式。这两个类都不用初始化:
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解码相关推荐
- Python urlencode编码和urldecode解码
Python3 urlencode编码和urldecode解码分别用到了urllib.parse.quote和urllib.parse.unquote. import urllib.parse fon ...
- python 中的 urlencode 编码与 urldecode 解码
文章目录 脚本示例 运行结果 脚本示例 在 python 中进行 UrlEncoded 与 UrlDecode 操作需要导入 urllib 相关函数库: import urllib.parse 脚本示 ...
- java urlencode 解码_java.net.URLEncode编码 与 URLDecode解码问题
网页中的表单使用POST方法提交时,数据内容的类型是 application/x-www-form-urlencoded,这种类型会: 1.字符"a"-"z", ...
- URLEncode编码和URLDecode解码
1 String text1 = java.net.URLEncoder.encode("中国" ,"utf-8" ); 2 String text2 = ja ...
- 在线UrlEncode编码和UrlDecode解码(#用%23代替)
http://www.urlencode.com.cn/ #号可以用%23代替
- java.net.URLEncode编码 与 URLDecode解码问题
原文:http://blog.csdn.net/luojian520025/article/details/9139293 -------------------------------------- ...
- asp页面和Asp.net页面传中文参数UrlEncode编码以及接收解码
在asp中加一个链接,指向asp.net网页,但asp.net的网址是经过HttpUtility.UrlEncode转换和HttpUtility.UrlDecode解码的,而asp的server.ur ...
- php url编码原理,urlencode编码/urldecode解码作用及使用方法
urlencode和urldecode释义 urlencode是一个函数,可将字符串以URL编码,用于编码处理. URL编码(URL encoding),也称作百分号编码(Percent-encodi ...
- JS javascript实现url编码和url解码(urlEncode urlDecode)
本文转自:JS javascript实现url编码和url解码(urlEncode urlDecode) 转载请保留. 表单通过get方式提交中文数据时,提交的中文会被转化为类似"%CC% ...
最新文章
- 1.为什么要学习MATLAB
- JS实现图片预览与等比缩放
- Linux C/C++ Openssl RSA Encrypt/Decrypt(加密/解密) 简单示例教程
- python父进程调用子进程_Python2.7下,调用subprocess启动子进程,读取子进程标准输出若干问题...
- JavaScript 学习提升
- wav2midi 音乐旋律提取算法 附可执行demo
- Mysql5换成Mysql8之后报错java.lang.ClassNotFoundException: com.mysql.jdbc.driver的问题解决
- php smarty 语法,php之Smarty根本语法和三大变量
- 2019年上半年计算机水平,2019年上半年全国计算机等级考试通过秘诀分享
- 国家计算机考试报名照片编辑器,Artensoft Photo Editor(电脑照片编辑软件) V1.5 官方版...
- php新年倒计时源码,新年倒计时源码
- 【RFC3449 网络路径不对称对 TCP 性能的影响】(翻译)
- 厘米与像素的单位转换
- 【Oracle】TYPE定义的数据类型
- XE中FMX操作ListBox,添加上千条记录(含图片)
- SLAM闲谈(一)--词袋模型
- 第六届高分子材料国际研讨会(PMS-BT 2019)
- 兄弟hl3150cdn打印测试页6_兄弟3150CDN彩色激光打印机
- 小心看上去平平无奇的陷阱:如何防范高级渣?
- ppt形状html,PPT如何才能高大上?“形状”在PPT有这些妙用
热门文章
- 轻量级的开源代理服务器Tinyproxy安装与配置
- Blender 3D 打印插件Print Toolbox
- Unity接入 阿里云OSS 腾讯云Cos的SDK,实现上传文件功能
- mkfifo命名管道+fork实现文件拷贝
- win7计算机里网络共享没有,怎么找不到共享电脑,教您局域网中共享电脑找不到怎么办...
- 弘辽科技:微信小程序嵌入小红书 GUCCI纪梵希YSL尝鲜“化公为私”
- bcrypt java maven_BCrypt 密码加密
- .NET Framework各个版本下载官网
- #python# 成语接龙(一)
- mysql是什么数据_了解MySQL数据页吗?说说什么是页分裂吧!