JS 和 Java 中URL特殊字符编码方式

Posted 孙猴子

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JS 和 Java 中URL特殊字符编码方式相关的知识,希望对你有一定的参考价值。

  前几天遇到url特殊字符编码的问题,在这里整理一下:

 

  JavaScript

  1.  编码 escape(String)

    其中某些字符被替换成了十六进制的转义序列。

   

   解码 unescape(String)

    该函数的工作原理是这样的:通过找到形式为 %xx 和 %uxxxx 的字符序列(x 表示十六进制的数字),用 Unicode 字符 \u00xx 和 \uxxxx 替换这样的字符序列进行解码。

    *注释:ECMAScript v3 反对使用该方法,应用使用 decodeURI() 和 decodeURIComponent() 替代它。

 

  2. 编码 encodeURI(URIstring)

    返回值:URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。

    *如果 URI 组件中含有分隔符,比如 ? 和 #,则应当使用 encodeURIComponent() 方法分别对各组件进行编码。

 

   解码 decodeURI(URIstring)

    返回值:URIstring 的副本,其中的十六进制转义序列将被它们表示的字符替换。

 

  3. 编码 encodeURIComponent(URIstring)

    返回值:URIstring 的副本,其中的某些字符将被十六进制的转义序列进行替换。

 

   解码 decodeURIComponent(URIstring)

    返回值:URIstring 的副本,其中的十六进制转义序列将被它们表示的字符替换。

 
 

  *encodeURIcomponent() 与 encodeURI() 区别

    encodeURIComponent(URIstring) : 假定其参数是URI一部分(比如协议、主机名、路径或查询字符串),因此 encodeURIComponent() 函数将转义用于分隔 URI 各个部分的标点符号(? # 等)。

    encodeURI(URIstring) : 不会对URI中的分隔符编码,如 ? # 等。

 

 

  Java

    编码: Class URLEncoder 

 

    static String encode(String s);
    static String encode(String s, String enc);//enc 编码方式 推荐使用UTF-8

 

 

 

 

    解码: Class URLDecoder

    static String decode(String s);
    static String decode(String s, String enc);//enc 编码方式 推荐使用UTF-8

 

     * Java中的编码解码方式和JS中的encodeURIComponent()/decodeURIComponent()方法是前后台通用的;两者在处理字符串的方式是没有区别的;

以上是关于JS 和 Java 中URL特殊字符编码方式的主要内容,如果未能解决你的问题,请参考以下文章

url编码问题在python中怎么解决

JS对URL字符串进行编码/解码分析

JS 字符串编码函数(解决URL特殊字符传递问题):escape()encodeURI()encodeURIComponent()区别详解

url路径中 符号是特殊字符吗

url编码 - JS & jQuery Notes

java导出 Excel时,对特殊字符编码后的字符串进行解码