網路上查到的關於解決中文亂碼問題的過濾器程式碼中都有類似下面的這一段:
Map<String,String[]> map = request.getParameterMap();//获取有乱码的map
if(isNotEncode){//只能在第一次解决乱码
for(Map.Entry<String, String[]> entry : map.entrySet()){//遍历map,解决所有值的乱码
String [] vs = entry.getValue();
for(int i=0;i<vs.length;i++){
vs[i] = new String(vs[i].getBytes("iso8859-1"),encode);
}
}
isNotEncode = false;//设置为false,第二次就不会再进这个代码块了
}
return map;
這裡只是修改了map裡面的值集,此值集是String陣列的集合,實際上只是修改了String陣列裡的元素。我覺得這裡沒有必要取出entrySet並遍歷,只用取出Values並遍歷就可以達到同樣的效果,我親自實踐了一下也證實我的猜想。但我在網路上看到的資料幾乎都是遍歷entrySet,這是為什麼?只遍歷值集Values有什麼漏洞嗎?望高手解惑!
你的意思是這樣吧:
我覺得沒啥不可以的呀。
完全沒有必要,請參閱Tomcat的SetCharacterEncodingFilter的源碼