今天我遇到了一個奇怪的問題。之前我通過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中訪問,結果似乎證明了我的猜想:
當然,以上均是我個人的推理和分析,大家有更好的想法可以提出來。