escape()方法
采用ISO Latin字符集对指定的字符串进行编码。所有的空格符、标点符号、特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的16进制数字)。比如,空格符对应的编码是%20,如果是中文,则使用unicode编码格式如 %uxxxx。unescape方法与此相反。不会被此方法编码的字符有69个:@*_+-./ ,0-9,a-z,A-Z
encodeURI() 方法
把URI字符串采用UTF-8编码格式转化成escape格式的字符串。encodeURI不编码字符有82个:~!@#$&*()_+:?-=;',./,0-9,a-z,A-Z
encodeURIComponent() 方法
把URI字符串采用UTF-8编码格式转化成escape格式的字符串。与encodeURI()相比,这个方法将对更多的字符进行编码,比如 / 等字符。所以如果字符串里面包含了URI的几个部分的话,不能用这个方法来进行编码,否则 / 字符被编码之后URL将显示错误。不会被此方法编码的字符71个:~!*()_-'.,0-9,a-z,A-Z
POST方式下的特殊字符转换
随便说说表单以POST方式提交时,表单元素值中的一些字符也会转换,但以下不做转换:+@*_-. ,a-z A-Z 0-9 ,要转换的字符会先用浏览器的编码方式时行编码,然后把编码转换成%xx(xx为两位的十六进制)形式参数串后传送到服务器。
Java中的URLEncoder.encode(String s, String enc) /URLDecoder.decode(String s, String enc)编码方式
Java中的URLEncoder.encode(String s, String enc) /URLDecoder.decode(String s, String enc)机制:它们与JavaScript中的encodeURI、encodeURIComponent函数在编码方式上是不一样的。encodeURI、encodeURIComponent用的是UTF-8,是不能更改的。但Java里的编解码函数不一定是UTF-8,这里的编码与运行的环境是有关系的,默认情况下,在Tomcat5.5下是以ISO8859-1来解码URL中传递过来的参数的,但也可以设置URL的编码方式,比如Tomcat中设置URIEncoding与useBodyEncodingForURI属性是可以的,具体实例请看《HTTP码流与Jsp乱码问题的分析(一)》中的URLEncoder.encode()部分。
URLEncoder.encode(String s, String enc) 对 String 编码时,使用以下规则:
字母数字字符 "a" 到 "z"、"A" 到 "Z" 和 "0" 到 "9" 保持不变。
特殊字符 "."、"-"、"*" 和 "_" 保持不变。
空格字符 " " 转换为一个加号 "+"。
所有其他字符都是不安全的,因此首先使用一些编码机制将它们转换为一个或多个字节。然后每个字节用一个包含 3 个字符的字符串 "%xy" 表示,其中 xy 为该字节的两位十六进制表示形式。推荐的编码机制是 UTF-8。但是,出于兼容性考虑,如果未指定一种编码,则使用相应平台的默认编码。
例如,使用 UTF-8 编码机制,字符串 "The string ü@foo-bar" 将转换为 "The+string+%C3%BC%40foo-bar",因为在 UTF-8 中,字符 ü 编码为两个字节,C3 (十六进制)和 BC (十六进制),字符 @ 编码为一个字节 40 (十六进制)。
URLDecoder.decode(String s, String enc) 转换过程正好与 URLEncoder 类使用的过程相反。假定已编码的字符串中的所有字符为下列之一:"a" 到 "z"、"A" 到 "Z"、"0" 到 "9" 和 "-"、"_"、"." 以及 "*"。允许有 "%" 字符,但是将它解释为特殊转义序列的开始。
转换中使用以下规则:
字母数字字符 "a" 到 "z"、"A" 到 "Z" 和 "0" 到 "9" 保持不变。
特殊字符 "."、"-"、"*" 和 "_" 保持不变。
加号 "+" 转换为空格字符 " "。
将把 "%xy" 格式序列视为一个字节,其中 xy 为 8 位的两位十六进制表示形式。然后,所有连续包含一个或多个这些字节序列的子字符串,将被其编码可生成这些连续字节的字符所代替。可以指定对这些字符进行解码的编码机制,或者如果未指定的话,则使用平台的默认编码机制。
注:以下代码中的Cookie中写入中文必须先URLEncoder.encode编码,在读取Cookie时用URLDecoder.decode编码后转化为中文
<%
String name = "css枯黄";
Cookie ck = new Cookie(URLEncoder.encode("username"),URLEncoder.encode(name));
ck.setMaxAge(24*1000);
response.addCookie(ck);
out.println("写入Cookie完毕");
Cookie[] cookies = request.getCookies();
for(Cookie c:cookies){
if(c.getName().equals("username"))
{
out.println(URLDecoder.decode(c.getValue()));
}
}
%>
分享到:
相关推荐
主要给大家介绍了关于java中URLEncoder.encode与URLDecoder.decode处理url特殊参数的方法,文中介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧。
urlencoder 在Node.js中实现Java Land URLEncoder安装$ npm install urlencoder 例子超级简单: var encoder = require ( 'urlencoder' ) ;encoder . encode ( '哈哈' ) ;执照麻省理工学院
URLEncoder.encode(URLDecoder.decode(url,"iso-8859-1"), "iso-8859-1"); session.setAttribute("redirectUrl",url); } else{ session.setAttribute("redirectUrl", request.getRequestURL() .toString());...
filename = URLEncoder.encode(filename, "utf-8"); filename = filename.replace("+", " "); } else if (agent.contains("Firefox")) { // 火狐浏览器 //java 9和以上版本已经处理掉...
支持UTF8、16、32编解码。
字符集转换_SAP字符集转换_SAP字符集转换_SAP
通过URLEncoder.encode加密地址栏url上得中文字符, 并可通过java.net.URLDecoder.decode(str, charset)解密中文
java中的URLEncoder和URLDecoder类.docx
java.net.URLEncoder.encode(parameters.get(name), "UTF-8")); } params=sb.toString(); }else{ for (String name : parameters.keySet()) { sb.append(name).append("=").append( java.net.URLEncoder....
org.fife.io.unicodereader java.net.URLEncoder.encode()
一、基本概念 encodeURI和decodeURI是成对来使用的,因为浏览器的地址栏有中文字符的话,可以会出现不可预期的错误,所以可以encodeURI把非英文字符转化为... encodeURI()方法相当于java.net.URLEncoder.encode(URIStri
j2ME URLEncoder Vs URLDEcoder
String charEncode = java.net.URLEncoder.encode(“&”); System.out.println(“字符& 转译后的值为:” + charEncode ); //输出:& 所以,解决方法出现了—在传送参数前, 将&全部替换为& eg: var url = ”page...
} sb.append(String.format("%s=%s", URLEncoder.encode(entry.getKey().toString(), "UTF-8"), URLEncoder.encode(entry.getValue().toString(), "UTF-8") )); } return sb.toString(); } public static void main...
J2ME URLEncoder 和 URLDecoder 类的实现 实现J2ME没有的API
URLEncoder与URLDecoder的应用 对中文字符进行utf-8编码与解码 希望对各位有用
使用URLDecoder和URLEncoder 区别
本文实例讲述了JavaScript给url网址进行encode编码的方法。分享给大家供大家参考。具体分析如下: JavaScript给url网址进行encode编码,使用encodeURIComponent即可 var myUrl = 'http://www.baidu.com'; var ...
微信支付工具类,这是一个Jsp版的微信公众号支付接口及调用实例,微信网页授权获取用户基本信息,先获取 code,跳转 url 通过 code 获取 openId,URLEncoder.encode 后可以在backUri 的url里面获取传递的所有参数,...
如果换成新的地址报签名错误,那就是参数乱码了,解决方案将消息内容编码格式改一下params.put("logistics_interface",URLEncoder.encode(logistics_interface, "UTF-8"));//消息内容,post请求报文编码也改一下就...