摘要
本文主要讲述了:
- 复现
- 原因
- 解决方案
正文
复现
示例:
1 2 3 4 5 6 7 8 9 10 11 12
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <a href="index.html?username=中文">中文</a> </body> </html>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <script> window.addEventListener('click', function () { const xhr = new XMLHttpRequest(); xhr.open('GET', 'index.html?username=中文'); xhr.send(); }); </script> </body> </html>
|
原因
- 在
<a>
的href
特性中,如果 URL 的查询字符串中包含汉字,IE 浏览器直接传输汉字的UTF-8
编码,其他浏览器会隐式调用encodeURIComponent()
- 在 Ajax 的
GET
请求中,如果 URL 的查询字符串中包含汉字,IE 浏览器直接传输汉字的gbk
编码,其他浏览器会隐式调用encodeURIComponent()
解决方案
手动编码
示例:
1 2 3 4 5 6 7 8 9 10 11 12
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <a href="index.html?username=%E4%B8%AD%E6%96%87">中文</a> </body> </html>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <title>Document</title> </head> <body> <script> window.addEventListener('click', function () { const xhr = new XMLHttpRequest(); xhr.open('GET', 'index.html?username=%E4%B8%AD%E6%96%87'); xhr.send(); }); </script> </body> </html>
|
修改浏览器设置
- 打开【Internet 选项】
- 切换到【高级】
- 勾选【发送 Intranet URL 的 UTF-8 查询字符串】
- 勾选【发送非 Intranet URL 的 UTF-8 查询字符串】
- 点击【确定】
- 重启 IE 浏览器
Intranet URLs
Intranet URLs,中文意思为本地 URL。本地 URL 即本地网站的 URL。IE 浏览器支持用户指定哪些网站为本地网站。
Intranet URLs 配置方法:
- 打开 IE 浏览器的 Internet 选项
- 切换到安全标签页
- 点选本地 Intranet
- 点选站点
- 点选高级
本文对你有帮助?请支持我