BUG解决: 使用IE11浏览器向服务器 请求带有中文的信息时,出现404界面,但Chrome浏览器可以正常访问;
问题概述:
使用IE11浏览器向服务器 请求带有中文的信息时,出现404界面,但Chrome浏览器可以正常访问;
需求:
页面中 有两个超链接,点击超链接,可以弹出下载框;
出Bug的代码:
<head> <meta charset="UTF-8"> <title>下载页面</title> </head> <body> <a id="/day15/downloadServlet?filename=九尾.jpg" >图片1</a> ---> 备注: /day15为虚拟目录,downloadServlet为 Servlet的实现类; <a href="/day15/downloadServlet?filename=2.jpg"> 图片2</a> </body>
出现问题:
当弹出框显示的文件名称为中文名称时,使用IE11进行数据请求时,出现404界面,但Chrome浏览器 是可以正常使用的;
使用F12查询了浏览器实际向服务器请求时的信息,IE11的请求内容为: filename=乱码; chrome浏览器请求的内容为: filename=正常的URL编码;
问题解决方法:
1. 使用JavaScript中的Global对象的encodeURI() 或者encodeURIComponent()方法对 中文字符进行url编码 得到一个新得对象;
2. 使用这个新的到的对象,使用"+"运算符 添加到文件的url Pattern后;
修改后的页面代码:
<html lang="en"> <head> <meta charset="UTF-8"> <title>下载页面</title> <script> var pic_JiuWei = encodeURIComponent("九尾.jpg"); window.onload = function () { var a = document.getElementById("pic1"); a.setAttribute("href","/day15/downloadServlet?filename="+ pic_JiuWei); } </script> </head> <body> <a id="pic1" > 图片1</a> <a href="/day15/downloadServlet?filename=2.jpg"> 图片2</a> </body> </html>

浙公网安备 33010602011771号