1. 字符集(Charset)
- 字符集即字符的集合
- 字符集(Charset):是一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等
- 分类
- ASCII字符集
- Unicode 字符集
- GB2312字符集
- ...
1.1 字符编码(Character Encoding)
- 编码(Encoding),将数字映射到字符
1.2 转义符(escape character)
2. URL 编码与解码
- URL 只能使用 ASCII 字符集
- ASCII 集合之外的字符需要转换为有效的 ASCII 格式,格式为
%
加上两位十六进制字符,故URL编码通常也称为百分号编码 - URL 不能包含空格,URL 编码通常使用
+
来替换空格
2.1 URL 编码
- URL 编码参考手册
- Url编码的原则就是使用安全的字符去表示那些不安全的字符,对于Url中的合法字符,编码和不编码是等价的
URL 使用 key=value 键值对来传参,键值对之间以 & 符号分隔
value 值包含 = 或 &
,会造成接收Url的服务器解析错误,所以需要对字符进行转义,即编码
@Test
public void test() throws UnsupportedEncodingException {
String url = "/files/loadFile.html?attachIndex=https://cdn.xxx.com/this$*()*#.txt&fileName=this$*()*#.txt";
String fileName = url.split("&fileName=")[1];
// 编码 /files/loadFile.html?attachIndex=https://cdn.xxx.com/this%24*%28%29*%23.txt&fileName=this%24*%28%29*%23.txt;
String encodeUrl = url.replace(fileName, URLEncoder.encode(fileName, "UTF-8"));
// 解码
String decodeUrl = URLDecoder.decode(url, "UTF-8");
System.out.println(encodeUrl + "; " + decodeUrl);
}
2.2 URL 解码
编码和解码的过程是可逆的
String name = "23432424";
String encodeStr = URLEncoder.encode(name, "utf-8");
String decode = URLDecoder.decode(encodeStr, "utf-8");
网友评论