1. 程式人生 > >ie瀏覽器位址列中文引數提交伺服器亂碼分析

ie瀏覽器位址列中文引數提交伺服器亂碼分析

今天我遇到了一個奇怪的問題。之前我通過360瀏覽器位址列輸入中文引數提交到伺服器,伺服器解析正常。如下所示:


但是在偶然的情況下,我直接啟動了myeclipse自帶的瀏覽器,結果就發現了問題:


所以我就拿到了ie瀏覽器下測試,結果是同樣的:


我嘗試過很多方法,例如request.setCharacterEncoding("utg-8");new String(request.getParameter("name").getBytes("ISO-8859-1"),"utf-8");

修改tomcat預設傳輸編碼為utf-8,URLEncoding.encode(equest.getParameter("name"),"utf-8");均沒有效果,還是亂碼(我的瀏覽器和ide編碼都是utf-8)。

只不過變成了???亂碼。後來聽說???是因為GBK讀UTF-8編碼產生的錯誤,所以我又將ide編碼改為了gbk,

並呼叫了newString(request.getParameter("name").getBytes("ISO-8859-1"),"gbk");還是亂碼。

甚至將ide的編碼改為了gbk,呼叫new String(request.getParameter("name").getBytes("ISO-8859-1"),"gbk");也是無法解決亂碼

我在網上找了很久,看了很多別人寫的文章,但基本上沒有類似的問題描述

最終我無意在ie的瀏覽記錄中看到了之前的地址資訊:


我嘗試著訪問,結果伺服器解析正常。所以我就在想,是不是ie位址列不支援漢字,必須漢字轉碼才能被伺服器解析。而360會自動完成這個轉碼工作呢?

於是我就將360中可以正常訪問的一個帶中文引數的url放到ie中訪問,結果似乎證明了我的猜想:



     當然,以上均是我個人的推理和分析,大家有更好的想法可以提出來。