理想是火,点燃熄灭的灯。
// 假设 URL 为 http://example.com/?name=%E5%8D%A1%E4%BB%95%E8%BE%BE // 1. 获取 URL 的查询字符串 const urlParams = new URLSearchParams(window.location.search); // 2. 获取指定的参数,例如 'name' const name = urlParams.get('name'); // 3. 使用 decodeURIComponent 解码 const decodedName = decodeURIComponent(name); console.log(decodedName); // 输出:卡仕达
encodeURIComponent('卡仕达'); // 输出: %E5%8D%A1%E4%BB%95%E8%BE%BE decodeURIComponent('%E5%8D%A1%E4%BB%95%E8%BE%BE'); // 输出: 卡仕达
URL 编码是一种将特定字符(如中文、空格、特殊符号等)转换为 **百分号 (`%`) 加上两位十六进制数字** 的方式。浏览器和服务器通常用这种方式来处理 URL 中的特殊字符,确保这些字符在网络上传输时不会引起冲突或产生错误。
每个非 ASCII 字符会被转成 `UTF-8` 编码,然后每个 `UTF-8` 字节用 `%` 加上对应的两位十六进制数表示。
URL 是一个以 ASCII 字符集为基础的标准,许多字符(如空格、中文、以及某些标点符号)在 URL 中会被认为是不合法的,或者可能有特殊含义(比如 `?`、`&` 在查询字符串中用于分隔参数)。因此,这些字符需要进行编码,以确保它们能被正确地传输或存储。
- **百分号 (`%`)**:每个被编码的字符都用 `%` 表示,后面跟随两个表示字符编码值的十六进制数字。
- **十六进制表示法**:字符在 `UTF-8` 编码中的每个字节被转化为两位十六进制表示。
以“卡仕达”为例,这三个汉字在 `UTF-8` 中的字节分别是:
- **卡**:`E5 8D A1`
- **仕**:`E4 BB 95`
- **达**:`E8 BE 85`
每个字节通过百分号编码就变成 `%E5%8D%A1%E4%BB%95%E8%BE%85`。
1. **浏览器 URL**:例如,浏览器在访问包含中文字符的 URL 时,会自动将它们转换为 URL 编码形式。
2. **GET 请求参数**:当表单提交或者在 URL 中传递数据时,所有的特殊字符都会被编码,以确保请求的合法性。
3. **编码和解码**:JavaScript 中可以使用 `encodeURIComponent` 和 `decodeURIComponent` 对数据进行编码和解码。
`'%E5%8D%A1%E4%BB%95%E8%BE%BE'` 是 "卡仕达" 的 URL 编码形式。通过这种方式,浏览器和服务器能够安全地处理和传输 URL 中的特殊字符。
作者: Bill 本文地址: http://biaoblog.cn/info?id=1729069509045
版权声明: 本文为原创文章,版权归 biaoblog 个人博客 所有,欢迎分享本文,转载请保留出处,谢谢!