`
dannyhz
  • 浏览: 398304 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

url的百分号编码

 
阅读更多
怎么进行: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); 
 }


分享到:
评论

相关推荐

    URL编码,Gb2312页面提交到Utf-8页面

    ### URL编码:Gb2312页面提交到Utf-8页面 #### 一、引言 在Web开发中,不同编码格式之间的数据转换是常见需求之一。本文将深入探讨如何实现从Gb2312编码的网页向Utf-8编码网页的数据提交过程中的URL编码转换。Gb...

    JS实现URL编码转换中文

    URL编码(也称为百分号编码)是一种机制,用于将特殊字符(如空格、中文字符等)转换为可以在URL中安全传输的形式。在URL中,某些字符有特殊含义,不能直接使用。例如,“&”用于分隔URL参数,“=”用于表示参数名和...

    URL编码 URL编码

    2. 编码过程通常使用百分号("%")加上两个十六进制的数字来表示每个非安全字符。例如,空格会被编码为"%20"。 3. 不同的字符有不同的编码值,比如"&"编码为"%26","+"编码为"%2B"。在HTTP请求中,"+"通常被用作空格的...

    解析URL和文件的编码方式

    最常用的编码标准是百分号编码(% encoding),根据RFC 3986标准,非ASCII字符以及某些保留字符(如空格、大括号等)需要转换为百分号形式。例如,空格会被转换为"%20"。编码过程通常由编程语言提供的内置函数自动...

    url编码gbk格式

    GBK编码的URL编码过程就是将GBK字符转换为%xx形式的百分号编码,其中xx代表该字符在GBK编码中的16进制值。 本压缩包文件提供了两个工具类,用于对GBK格式的字符串进行URL编码。这两个工具类可能分别采用了不同的...

    urlcode解码-HTTP:URL编码解码

    URL编码是将URL中可能引起问题的字符转换为ASCII字符集的等效百分号编码。这包括空格、非ASCII字符以及某些特殊字符,如大括号、引号、尖括号等。例如,空格通常被转换为"%20"。这是因为URL不能包含某些字符,比如...

    vb url编码解码vb url编码解码vb url编码解码

    URL编码,也称为百分号编码,是一种用于将特殊字符转换为适用于URL格式的编码方式,目的是确保这些特殊字符能够正确地在网络上传输。URL解码则是这一过程的逆操作,即将编码后的字符串转换回原始的字符。 ### VB中...

    易语言URL编解码

    而URLDecode则是URLEncode的逆过程,它将百分号编码的字符串还原为原始的URL字符串。 在易语言中实现URL编解码,需要理解以下关键点: 1. 字符编码:URL编解码通常基于ASCII编码,但现代的URL标准(如RFC3986)...

    url编码转化,将url转化成unicode进行传输

    URL编码(也称为百分号编码)是一种用于表示URL中特殊字符的标准方法。它主要用于确保所有字符都能通过网络正确传输。例如,某些字符如空格、尖括号、引号等在URL中具有特殊含义,因此需要被转义。URL编码的主要目的...

    C#自动识别URL编码,asp.net自动识别URL编码

    URL编码,也称为百分号编码(Percent-encoding),是统一资源定位符(Uniform Resource Locator, URL)的一部分,用于在非ASCII字符或特殊字符出现在URL中时进行编码。这是因为URLs只能包含ASCII字符集,而许多语言...

    一个简单url编码解码

    URL编码是根据RFC 3986标准进行的,主要使用百分号(%)表示非ASCII字符或特殊字符的ASCII十六进制值。例如,空格被编码为"%20"。编码过程通常是将URL中的每个非字母数字字符转换为其对应的ASCII值,并用"%xx"的形式...

    URL编码转换工具

    根据RFC 3986,URL编码采用百分号`%`加上字符的ASCII码的两位十六进制表示。例如,空格(ASCII码为32)被编码为`%20`,百分号`%`本身(ASCII码为37)编码为`%25`。 URL编码的过程主要包括以下几个步骤: 1. 对每个...

    url编码转换器

    URL编码的主要目的是解决URL中可能包含的特殊字符,如空格、引号、百分号等,这些字符在HTTP协议中具有特殊含义,如果直接使用可能会导致解析错误。在这个“url编码转换器”中,我们可以看到它主要服务于将这些特殊...

    URL编码表一览

    URL编码(也称为百分号编码)是一种用于在URL中表示特殊字符的方法。这是因为URL中的某些字符在不同的上下文中可能具有特殊含义,例如空格、斜杠等。为了确保这些字符能正确地被解析并传输,就需要将它们转换成一种...

    URL 编码文档

    对于非ASCII字符,如中文字符,它们通常需要转换为对应的UTF-8编码后再进行百分号编码,以确保在各种字符集环境下的兼容性。 在实际应用中,编程语言提供了内置函数来自动处理URL编码和解码。例如,在JavaScript中...

    url编码

    1. **编码**:将非ASCII字符或特殊字符转换为百分号编码的过程。例如,`encodeURIComponent()` 函数会将空格转为 `%20`。 2. **解码**:反之,将百分号编码还原为原始字符的过程。JavaScript的 `decodeURIComponent...

    URL编码转换工具 很好用

    因此,URL编码使用百分号(%)加两位十六进制数来表示这些特殊字符。 **编码过程** 1. **非字母数字字符转换**:任何非字母数字字符(ASCII码不在A-Z、a-z、0-9范围内的字符)都将被替换为"%XX"的形式,其中XX是该...

    URL编码转换-模块

    `urllib.parse.quote()`函数用于对字符串进行URL编码,将非字母数字字符转换为百分号编码形式。例如,空格会转换为"%20"。而`urllib.parse.unquote()`函数则用于将百分号编码的字符串解码回原始形式。 在“URL编码...

    url编码工具

    1. 将URL中的特殊字符自动转换为它们的百分号编码形式,确保URL的正确性和可传递性。 2. 解码已经编码的URL,还原其原始内容,便于理解和编辑。 3. 对整个URL进行操作,也可以针对URL的一部分进行编码或解码,以满足...

    URL编码解码器

    URL编码遵循统一资源标识符(URI)的规则,其中最常用的是基于百分号(%)的编码方法。每个非ASCII或特殊字符会被替换为"%xy"的形式,其中xy是该字符在UTF-8编码中的两个字节的十六进制表示。例如,空格字符(ASCII...

Global site tag (gtag.js) - Google Analytics