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()));
}
}
%>
分享到:
相关推荐
`URLEncoder.encode()` 和 `URLDecoder.decode()` 是Java标准库中的两个关键方法,分别用于对URL参数进行编码和解码,以确保数据能够正确无误地在网络间传输。 **`URLEncoder.encode()`** 方法接受两个参数:需要...
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());...
String urlStr = URLEncoder.encode("天津大学", "utf-8"); ``` 上面的代码会将“天津大学”编码为一个符合`application/x-www-form-urlencoded`格式的字符串,编码的字符集可以指定为`utf-8`或其他字符集。 相反,...
String encodedStr = URLEncoder.encode("Hello World", "UTF-8"); System.out.println(encodedStr); // 输出: Hello%20World } catch (UnsupportedEncodingException e) { e.printStackTrace(); } ``` - **...
在Java中,可以使用`java.net.URLEncoder.encode()`方法对加密字符串进行编码,解码则使用`java.net.URLDecoder.decode()`。 7. **异常处理**:在实际应用中,应更全面地处理可能抛出的异常,包括捕获并记录异常...
在Android客户端中,我们可以使用URLEncoder.encode()方法对需要传输的中文参数进行编码。URLEncoder.encode()方法可以将字符串编码为application/x-www-form-urlencoded MIME格式,这样可以确保中文字符被正确地...
C# Encoder 与 Decoder的例子,详细注释。 Encoder Decoder 编码 解码 C# Encoder Decoder 编码 解码 C# Encoder Decoder 编码 解码 C# Encoder Decoder 编码 解码 C#
例如,在上面的程序中,我们使用 URLDecoder.decode("%E6%9D%8E%E5%88%9A+j2ee", "UTF-8") 将图 17.3 所示地址栏中的“乱码”转换成普通字符串“李刚 j2ee”。 URLEncoder 的使用 URLEncoder 类包含一个 encode...
在这个例子中,之前通过`URLEncoder`编码的字符串`enUft`被`URLDecoder.decode()`方法解码回其原始状态。 #### 三、注意事项 1. **异常处理**:使用这两个类时需要注意捕获并处理`UnsupportedEncodingException`...
支持UTF8、16、32编解码。
字符集转换_SAP字符集转换_SAP字符集转换_SAP
在IT行业中,编码和解码是开发者经常遇到的任务,特别是在处理字符串、数据传输或存储时。C#作为一款强大的编程语言,提供了丰富的类库来支持这些操作。"UniEncoder解码库"就是为了简化这一过程而设计的,它能快速...
使用URLEncoder.encode()方法,可以将字符串转换为适合在URL中传输的形式。例如,如果有一个包含空格的字符串"Hello World",编码后会变为"Hello%20World"。编码过程会将非字母数字字符转换为百分号(%)加上其ASCII...
String decodedUrl = URLDecoder.decode(encodedUrl, StandardCharsets.UTF_8); System.out.println("Decoded URL: " + decodedUrl); String unescapedHtml = StringEscapeUtils.unescapeHtml4(escapedHtml); ...
filename = URLEncoder.encode(filename, "utf-8"); filename = filename.replace("+", " "); } else if (agent.contains("Firefox")) { // 火狐浏览器 //java 9和以上版本已经处理掉...
总结来说,解决VideoView在线播放视频时路径中文转码问题的关键在于正确地使用`URLEncoder.encode()`和`URLDecoder.decode()`方法,以及理解Android系统和Java语言对文件路径编码的要求。通过这些手段,可以确保包含...
通过URLEncoder.encode加密地址栏url上得中文字符, 并可通过java.net.URLDecoder.decode(str, charset)解密中文
(1)使用java.net.URLEncoder.encode("xxxx",“utf-8")和java.net.URLDecoder.decode("xxxx",“utf-8")。 (2)使用encodeURI(“xxxx”)和java.net.URLDecoder.decode("xxxx",“utf-8")。 这两种转码方式是很好用...