解決ie下cookie中文亂碼問題
阿新 • • 發佈:2019-02-14
今天在專案中碰到一個問題,chrome,Firefox瀏覽器下cookie中的中文都正常,唯獨IE下出現亂碼。
專案中全部採用utf-8編碼,可是IE下現實仍然不正常。最終進過排查,發現IE傳到後臺的cookie值 ,
仍然採用ISO8859-1編碼格式,所以導致了以utf-8解析的時候出現錯誤的情況。
這時候,對chrome和IE進行不同的解碼就可以。
IE下:cookValue=new String(cookie.getValue().getBytes(“ISO8859-1”)); //這裡結果直接得到中文
chrome下:cookValue=cookie.getValue();
程式碼如下:
Cookie cookie = (Cookie) cookieMap.get(name);
String cookValue = null;
if (request.getHeader("User-Agent").toUpperCase().indexOf("MSIE") > 0) {
// IE8,9瀏覽器
cookValue=new String(cookie.getValue().getBytes("ISO8859-1"));
return cookValue;
}else if (request.getHeader("User-Agent" ).toUpperCase().indexOf("TRIDENT") > 0) {
// IE11瀏覽器
cookValue=new String(cookie.getValue().getBytes("ISO8859-1"));
return cookValue;
} else {
// 其他瀏覽器
cookValue=cookie.getValue();
}
cookValue = java.net.URLDecoder.decode(cookValue, "utf-8");
return utf8Togb2312(cookValue);//utf8Togb2312()是utf-8轉中文函式,可以百度一個