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>

 

posted @ 2021-06-13 20:21  小人物_大情怀  阅读(414)  评论(0)    收藏  举报