悠悠楠杉
网站页面
正文:
在互联网通信中,URL(统一资源定位符)是传递参数的重要载体。但URL中若包含空格、汉字或特殊符号(如&、?),可能导致解析错误或安全问题。这时,就需要用到urlencode(编码)和urldecode(解码)技术。
URL标准规定,仅允许使用ASCII字符集中的部分字符(如字母、数字和少数符号)。若URL中包含:
1. 非ASCII字符(如中文、日文)
2. 保留字符(如?, =, &,用于分隔URL参数)
3. 不安全字符(如空格会被转为+或%20)
这些字符必须被编码为%后跟两位十六进制数的形式。例如:
- 空格 → %20
- 汉字“中” → %E4%B8%AD
-, _, ., ~)。%XX格式,XX是字符的UTF-8编码的十六进制值。+(表单提交时)或%20(URL路径中)。from urllib.parse import quote
encoded = quote("参数=值&name=张三", safe="")
print(encoded) # 输出:%E5%8F%82%E6%95%B0%3D%E5%80%BC%26name%3D%E5%BC%A0%E4%B8%89解码是编码的逆过程,将%XX恢复为原始字符,同时处理+为空格。
$decoded = urldecode("%E4%B8%AD%E6%96%87+Test");
echo $decoded; // 输出:"中文 Test"plaintext
https://example.com/search?q=url+encodeapplication/x-www-form-urlencoded数据编码。%2520是%20的二次编码)。encodeURIComponent()(编码更严格)。URLEncoder会编码空格为+。let encoded = encodeURIComponent("a/b?c=1");
console.log(encoded); // 输出:"a%2Fb%3Fc%3D1"掌握urlencode和urldecode是Web开发的基础技能。无论是处理用户输入、构建API,还是解决乱码问题,清晰的编码逻辑都能让你的程序更健壮。实际开发中,建议直接使用语言内置库,而非手动拼接,以减少错误。