使用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對象,在任何執行環境下都是可行的。