URLEncoder
类静态方法encode(String s, String enc)
简介
主要用于HTML表单编码的实用类, 可将包含将String转换为application/x-www-form-urlencoded
MIME格式的静态方法
该类方法:
public static String encode(String s, String enc)
使用特定的编码方案将字符串转换为 application/x-www-form-urlencoded
格式,不推荐使用encode(String s)
,因为字符串可能会因平台的默认编码会有所不同,因此最好明确指定
Java中编码示例
String name="contain中文的字符串";
String ss = URLEncoder.encode(name, "utf-8");
// contain%E4%B8%AD%E6%96%87%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2
Javascript解码示例
var oristr = "contain%E4%B8%AD%E6%96%87%E7%9A%84%E5%AD%97%E7%AC%A6%E4%B8%B2";
var newstr = decodeURIComponent(oristr);
// contain中文的字符串
alert(newstr);
encodeURIComponent(param)
Javascript中内置函数,函数可把字符串作为 URI 组件进行编码,
该方法不会对 ASCII 字母和数字进行编码,也不会对 ASCII 中这些标点符号 比如- _ . ! ~ * ’ ( )进行编码,对于其他字符`比如;/??&=+$,#,这些用于分隔 URI 组件的标点符号),会被一个或多个十六进制的转义序列替换
根据官方文档,URLEncoder
类编码字符串时,适用以下规则:
- “
a
”至“z
”,“A
”至“Z
”和“0
”至“9
”保持不变。 - 特殊字符“
.
”,“-
”,“*
”和“_
”保持不变。 - 空格字符“”被转换为加号“
+
”。 - 所有其他字符都不安全,并且首先使用一些编码方案将其转换为一个或多个字节。 然后每个字节由3个字符串“
%xy
”表示,其中xy是字节的两位十六进制表示。 推荐使用的编码方案是UTF-8。 但是,出于兼容性原因,如果未指定编码,则使用平台的默认编码。
例如,使用UTF-8作为编码方案,字符串“Ã@ foo-bar”将被转换为“The + string +%C3%BC%40foo-bar”,因为在UTF-8中,字符¼被编码为2字节C3(十六进制)和BC(十六进制),字符@被编码为一个字节40(十六进制)