1. 程式人生 > >解決ie下cookie中文亂碼問題

解決ie下cookie中文亂碼問題

今天在專案中碰到一個問題,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轉中文函式,可以百度一個