使用ie浏览器,当get请求访问url中含有中文时,就会返回404. 为什么firfox和chrome就没有这个问题呢? 对比后你会发现浏览器地址栏中firfox和chrome把中文都转换成了%E....什么的东西,然后copy到ie也能正常访问了.
这个是ie不会自动把不符合标准的字符转换成特殊的utf8造成的.
网上搜了好多所谓的解决方法降低tomcat版本什么的,都太麻烦又不太实用.
今天看ECMA文档,看到了Global 的 encodeURI() 函数就是解决这类问题的. 所以就记录下,别下次忘记了.
测试了下是ok的
var url = '/tw/topic/test.htm?id=123&name=姓名';
console.log(url);
console.log(encodeURI(url));
//11:37:01.247 /tw/topic/test.htm?id=123&name=姓名
//11:37:01.248 /tw/topic/test.htm?id=123&name=%E5%A7%93%E5%90%8D
浏览器中Global对象是作为window的一部分实现的,
一种取得Global对象的方法是使用以下代码:var global = function(){ return this; }();
,在没有给函数明确指定this值的情况下(无论是通过将函数添加为对象的方法,还是通过调用call()或apply()),this值等于Global对象。而像这样通过简单地返回this来取得Global对象,在任何执行环境下都是可行的。