欢迎来到Introzo百科
Introzo百科
当前位置:网站首页 > 技术 > 浅谈URLEncoder编码算法

浅谈URLEncoder编码算法

日期:2023-09-30 15:06

-->

1。为什么使用 URLEncoder

客户端发出网页请求时,URL中可能包含非ASCII码的内容,例如中文。

URL中不允许直接放入汉字,所以需要使用URLEncoder对地址进行编码,

将URL中的非ASCII内容转换为可以传输的字符

不会被编码的内容

1.大写字母A-Z

2。小写字母 a-z

3。数字 0-9

4。标点符号 - _ 。 ! ~ * '(和,)

2。编码原理

1。将需要转换的内容(ASCII码形式以外的内容)转换为十六进制,并在开头添加%

例如:0x9c URLEncoder --> %9c

2。将内容中的所有空格“ ”替换为+

3。注意:与 Hex 不同的是,Hex 会将所有字符转换为十六进制表示,而 URLEncoder 将 ASCII 代码集之外的字符转换为 % 加相应的十六进制表示,而 ASCII 代码集以内的字符则不进行处理

3。应用场景

1。所有 GET 请求

2。网址有汉字

3。 POST请求,所有Key和Value都要经过URLEncoder才提交

4。示例

尝试 {
String a = URLEncoder.encode("a", "UTF-8");
Log.i("encode","URLEncoder 编码后的 a -->"+a );
String b = URLEncoder.encode("a", "UTF-8");
Log.i("encode","a中URLEncoder编码后-->"+b);String debug = nURLDecoder.decode("a%E4%B8%AD", "UTF-8");
Log.i("encode","URLDecoder解码后的a%E4%B8%AD --> " +解码);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}

运行结果:

10-17 07:33:14.357 1012-1012/com.xqx.encrypsthow I/encode:a URLEncoder 编码后-->a
10-17 07:33:14.367 1012-1012/com. xqx.encrypsthow I/encode: 在 a-->a%E4%B8%AD
10-17 07:33:14.377 1012-1012/com.xqx.encrypsthow 中进行 URLEncoder 编码后: a%E4 % B8%AD 通过 URLDecoder 解码后 --> 在

可以看到字符‘a’没有被编码,而是中文‘中’被编码了

对应URLEncoder编码的是URLDecoder解码

可以看到“a in”--编码-->“a%E4%B8%AD”--解码-->“a in”

相关知识:

浅谈Hex编码算法

Base64编码算法浅谈

-->