- 浏览: 395016 次
- 性别:
- 来自: 杭州
文章分类
- 全部博客 (760)
- 股票日志 (26)
- Selenium (0)
- selenium 2 环境的搭建 (1)
- 并发 (7)
- 框架开发 (1)
- 动态代理 (2)
- Struts2 (2)
- POI (2)
- jdk (3)
- maven (31)
- spring (35)
- mysql (31)
- 工作机会 (3)
- xtream (1)
- oracle dbms_metadata GET_DDL (0)
- SSI (1)
- DB (61)
- powermock (4)
- java 基础 (25)
- 多线程 (11)
- 高手 (2)
- java 底层 (2)
- 专业网站 (1)
- 开发联想 (1)
- 开发联想 (1)
- bat文件 (2)
- 清queue 语句 (1)
- 清queue 语句 (1)
- jquery (7)
- html5 (1)
- Jenkins (10)
- Linux (17)
- 工作issue (2)
- tomcat log (3)
- jvm (23)
- 项目细节 (0)
- oracle (41)
- 泛型 (3)
- 新知识点 (1)
- 数据库ddl 语句 (0)
- AQ (2)
- jms (0)
- 网络资源 (6)
- github (6)
- Easymock (1)
- Dom 解析XML (1)
- windows命令 (2)
- java (7)
- 正则表达式 (5)
- sequence (1)
- oracle 表meta信息 (1)
- 小工具技巧 (1)
- 辅助工具 (1)
- Junit (1)
- 泛型 generic (2)
- Java程序设计 (1)
- cglib (2)
- 架构师之路 (1)
- 数据库连接池 (5)
- c3p0 (1)
- eclipse使用 (1)
- oracle sql plus (1)
- 码农人生 (3)
- SVN (15)
- sqlplus (2)
- jsoup (1)
- 网络爬虫 (2)
- 新技能 (1)
- zookeeper (4)
- hadoop (1)
- SVNKIT (1)
- 从工具到知识点的整理 (1)
- log4j (13)
- 读文件 (0)
- 转义字符 (1)
- command (1)
- web service (3)
- 锁 (1)
- shell 脚本 (1)
- 遇到的错误 (2)
- tomcat (14)
- 房产 (5)
- bootstrap jquery ui (1)
- easyui (2)
- 个人征信 (1)
- 读写分离 (1)
- 备份 (1)
- rmi (6)
- webservice (1)
- JMX (4)
- 内存管理 (3)
- java设计 (1)
- timer (1)
- lock (2)
- concurrent (2)
- collection (1)
- tns (1)
- java基础 (15)
- File (1)
- 本机资源 (1)
- bat (1)
- windows (4)
- 数据结构 (3)
- 代码安全 (1)
- 作用域 (1)
- 图 (2)
- jvm内存结构 (1)
- 计算机思想 (1)
- quartz (6)
- Mongo DB (2)
- Nosql (4)
- sql (5)
- 第三方Java 工具 jar 项目 (2)
- drools (1)
- java swing (2)
- 调用console (1)
- runtime (1)
- process (1)
- swing (2)
- grouplayout (1)
- dubbo (0)
- bootstrap (0)
- nodejs (2)
- SVN hooks (1)
- jdbc (3)
- jdbc error (1)
- precedure (1)
- partition_key (1)
- active mq (1)
- blob (2)
- Eclipse (6)
- web server (1)
- bootstrapt (2)
- struts (1)
- ajax (1)
- js call back (1)
- 思想境界拓展 (1)
- JIRA (1)
- log (1)
- jaxb (3)
- xml java互相转换 (1)
- 装修 (2)
- 互联网 (2)
- threadlocal (3)
- mybatis (22)
- xstream (1)
- 排序 (1)
- 股票资源 (1)
- RPC (2)
- NIO (3)
- http client (6)
- 他人博客 (1)
- 代理服务器 (1)
- 网络 (2)
- web (1)
- 股票 (5)
- deadlock (1)
- JConsole (2)
- activemq (3)
- oralce (1)
- 游标 (1)
- 12月13日道富内部培训 (0)
- grant (1)
- 速查 (2)
- classloader (4)
- netty (4)
- 设计模式 (2)
- 缓存 (2)
- ehcache (2)
- framework (1)
- 内存分析 (2)
- dump (1)
- memory (2)
- 多高线程,并发 (1)
- hbase (2)
- 分布式系统 (1)
- socket (3)
- socket (1)
- 面试问题 (1)
- jetty (2)
- http (2)
- 源码 (1)
- 日志 (2)
- jni (1)
- 编码约定 (1)
- memorycache (1)
- redis (13)
- 杂谈 (1)
- drool (1)
- blockingqueue (1)
- ScheduledExecutorService (1)
- 网页爬虫 (1)
- httpclient (4)
- httpparser (1)
- map (1)
- 单例 (1)
- synchronized (2)
- thread (1)
- job (1)
- hashcode (1)
- copyonwriteArrayList (2)
- 录制声音 (1)
- java 标准 (2)
- SSL/TLS (1)
- itext (1)
- pdf (1)
- 钻石 (2)
- sonar (1)
- unicode (1)
- 编码 (4)
- html (1)
- SecurityManager (1)
- 坑 (1)
- Restful (2)
- svn hook (1)
- concurrentHashMap (1)
- 垃圾回收 (1)
- vbs (8)
- visual svn (2)
- power shell (1)
- wmi (3)
- mof (2)
- c# (1)
- concurrency (1)
- 劳动法 (1)
- 三国志游戏 (2)
- 三国 (1)
- 洪榕 (2)
- 金融投资知识 (1)
- motan (1)
- tkmybatis mapper (1)
- 工商注册信息查询 (1)
- consul (1)
- 支付业务知识 (2)
- 数据库备份 (1)
- 字段设计 (1)
- 字段 (1)
- dba (1)
- 插件 (2)
- PropEdit插件 (1)
- web工程 (1)
- 银行业知识 (2)
- 国内托管银行 (1)
- 数据库 (1)
- 事务 (2)
- git (18)
- component-scan (1)
- 私人 (0)
- db2 (14)
- alias (1)
- 住房 (1)
- 户口 (1)
- fastjson (1)
- test (6)
- RSA (2)
- 密钥 (1)
- putty (1)
- sftp (1)
- 加密 (1)
- 公钥私钥 (3)
- markdown (1)
- sweet (1)
- sourcetree (1)
- 好工具 (1)
- cmd (1)
- scp (1)
- notepad++ (1)
- ssh免密登录 (1)
- https (1)
- ssl (2)
- js (2)
- h2 (1)
- 内存 (2)
- 浏览器 (1)
- js特效 (1)
- io (1)
- 乱码 (1)
- 小工具 (1)
- 每周技术任务 (1)
- mongodb (7)
- 内存泄漏 (1)
- 码云 (2)
- 如何搭建java 视频服务器 tomcat (1)
- 资源 (1)
- 书 (1)
- 四色建模法 (1)
- 建模 (1)
- 配置 (1)
- 职位 (1)
- nginx (1)
- excel (1)
- log4j2 (2)
- 做菜 (1)
- jmap (1)
- jspwiki (1)
- activiti (1)
- 工作流引擎 (1)
- 安卓 (1)
- acitviti 例子 (1)
- 二维码 (1)
- 工作流 (1)
- powerdesign (2)
- 软件设计 (1)
- 乐观锁 (1)
- 王者荣耀 (1)
- session (2)
- token (5)
- cookie (4)
- springboot (24)
- jwt (2)
- 项目路径 (1)
- magicbook (1)
- requestType (1)
- json (2)
- swagger (1)
- eolinker (1)
- springdata (1)
- springmvc (1)
- controlleradvice (1)
- profile (1)
- 银行四要素 (1)
- 支付人员资源 (1)
- 支付渠道 (1)
- yaml (1)
- 中文编码 (1)
- mongo (2)
- serializable (1)
- 序列化 (1)
- zyd (1)
- unittest (1)
- 工具 (1)
- Something (1)
- 通达信 (1)
- protobuf (1)
- 算法 (1)
- springcloud (2)
- hikari (1)
- rocketmq (7)
- cachecloud (1)
- serfj (1)
- axure (1)
- lombok (1)
- 分布式锁 (1)
- 线程 (2)
- 同步代码块 (1)
- cobar (1)
- mq (1)
- rabbitmq (1)
- 定时执行 (1)
- 支付系统 (3)
- 唱歌 (1)
- elasticjob (1)
- 定时任务 (1)
- 界面 (1)
- flink (2)
- 大数据 (1)
- 接私活 (0)
- 内部培训 (2)
最新评论
-
dannyhz:
做股票从短线 试水,然后 慢慢发现 波段和 中期的故事可挖, ...
搭台唱戏 -
dannyhz:
http://developer.51cto.com/art/ ...
如何自己开发框架 它的注意点是什么
怎么进行:URLEncode编码 与 URLDecode解码
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解码
该方法要求你自己指定编码形式。这两个类都不用初始化:
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);
}
相关推荐
### URL编码:Gb2312页面提交到Utf-8页面 #### 一、引言 在Web开发中,不同编码格式之间的数据转换是常见需求之一。本文将深入探讨如何实现从Gb2312编码的网页向Utf-8编码网页的数据提交过程中的URL编码转换。Gb...
URL编码(也称为百分号编码)是一种机制,用于将特殊字符(如空格、中文字符等)转换为可以在URL中安全传输的形式。在URL中,某些字符有特殊含义,不能直接使用。例如,“&”用于分隔URL参数,“=”用于表示参数名和...
2. 编码过程通常使用百分号("%")加上两个十六进制的数字来表示每个非安全字符。例如,空格会被编码为"%20"。 3. 不同的字符有不同的编码值,比如"&"编码为"%26","+"编码为"%2B"。在HTTP请求中,"+"通常被用作空格的...
最常用的编码标准是百分号编码(% encoding),根据RFC 3986标准,非ASCII字符以及某些保留字符(如空格、大括号等)需要转换为百分号形式。例如,空格会被转换为"%20"。编码过程通常由编程语言提供的内置函数自动...
GBK编码的URL编码过程就是将GBK字符转换为%xx形式的百分号编码,其中xx代表该字符在GBK编码中的16进制值。 本压缩包文件提供了两个工具类,用于对GBK格式的字符串进行URL编码。这两个工具类可能分别采用了不同的...
URL编码是将URL中可能引起问题的字符转换为ASCII字符集的等效百分号编码。这包括空格、非ASCII字符以及某些特殊字符,如大括号、引号、尖括号等。例如,空格通常被转换为"%20"。这是因为URL不能包含某些字符,比如...
URL编码,也称为百分号编码,是一种用于将特殊字符转换为适用于URL格式的编码方式,目的是确保这些特殊字符能够正确地在网络上传输。URL解码则是这一过程的逆操作,即将编码后的字符串转换回原始的字符。 ### VB中...
而URLDecode则是URLEncode的逆过程,它将百分号编码的字符串还原为原始的URL字符串。 在易语言中实现URL编解码,需要理解以下关键点: 1. 字符编码:URL编解码通常基于ASCII编码,但现代的URL标准(如RFC3986)...
URL编码(也称为百分号编码)是一种用于表示URL中特殊字符的标准方法。它主要用于确保所有字符都能通过网络正确传输。例如,某些字符如空格、尖括号、引号等在URL中具有特殊含义,因此需要被转义。URL编码的主要目的...
URL编码,也称为百分号编码(Percent-encoding),是统一资源定位符(Uniform Resource Locator, URL)的一部分,用于在非ASCII字符或特殊字符出现在URL中时进行编码。这是因为URLs只能包含ASCII字符集,而许多语言...
URL编码是根据RFC 3986标准进行的,主要使用百分号(%)表示非ASCII字符或特殊字符的ASCII十六进制值。例如,空格被编码为"%20"。编码过程通常是将URL中的每个非字母数字字符转换为其对应的ASCII值,并用"%xx"的形式...
根据RFC 3986,URL编码采用百分号`%`加上字符的ASCII码的两位十六进制表示。例如,空格(ASCII码为32)被编码为`%20`,百分号`%`本身(ASCII码为37)编码为`%25`。 URL编码的过程主要包括以下几个步骤: 1. 对每个...
URL编码的主要目的是解决URL中可能包含的特殊字符,如空格、引号、百分号等,这些字符在HTTP协议中具有特殊含义,如果直接使用可能会导致解析错误。在这个“url编码转换器”中,我们可以看到它主要服务于将这些特殊...
URL编码(也称为百分号编码)是一种用于在URL中表示特殊字符的方法。这是因为URL中的某些字符在不同的上下文中可能具有特殊含义,例如空格、斜杠等。为了确保这些字符能正确地被解析并传输,就需要将它们转换成一种...
对于非ASCII字符,如中文字符,它们通常需要转换为对应的UTF-8编码后再进行百分号编码,以确保在各种字符集环境下的兼容性。 在实际应用中,编程语言提供了内置函数来自动处理URL编码和解码。例如,在JavaScript中...
1. **编码**:将非ASCII字符或特殊字符转换为百分号编码的过程。例如,`encodeURIComponent()` 函数会将空格转为 `%20`。 2. **解码**:反之,将百分号编码还原为原始字符的过程。JavaScript的 `decodeURIComponent...
因此,URL编码使用百分号(%)加两位十六进制数来表示这些特殊字符。 **编码过程** 1. **非字母数字字符转换**:任何非字母数字字符(ASCII码不在A-Z、a-z、0-9范围内的字符)都将被替换为"%XX"的形式,其中XX是该...
`urllib.parse.quote()`函数用于对字符串进行URL编码,将非字母数字字符转换为百分号编码形式。例如,空格会转换为"%20"。而`urllib.parse.unquote()`函数则用于将百分号编码的字符串解码回原始形式。 在“URL编码...
1. 将URL中的特殊字符自动转换为它们的百分号编码形式,确保URL的正确性和可传递性。 2. 解码已经编码的URL,还原其原始内容,便于理解和编辑。 3. 对整个URL进行操作,也可以针对URL的一部分进行编码或解码,以满足...
URL编码遵循统一资源标识符(URI)的规则,其中最常用的是基于百分号(%)的编码方法。每个非ASCII或特殊字符会被替换为"%xy"的形式,其中xy是该字符在UTF-8编码中的两个字节的十六进制表示。例如,空格字符(ASCII...