Kod penapis untuk menyelesaikan masalah aksara Cina bercelaru yang terdapat di Internet mempunyai perenggan yang serupa dengan yang berikut:
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;
Di sini kami hanya mengubah suai set nilai dalam peta Set nilai ini ialah koleksi tatasusunan String. Saya rasa tidak perlu mengeluarkan entriSet dan melintasinya Anda boleh mencapai kesan yang sama dengan hanya mengeluarkan Nilai dan melintasinya. Saya mengamalkannya sendiri dan mengesahkan sangkaan saya. Tetapi hampir semua maklumat yang saya lihat di Internet merentasi entrySet Mengapa ini? Adakah terdapat sebarang kelemahan dalam hanya merentasi Nilai set nilai? Saya harap pakar dapat menjelaskan kekeliruan!
Ini yang anda maksudkan:
Saya rasa tiada apa-apa yang salah dengannya.
Sama sekali tidak perlu, lihat kod sumber SetCharacterEncodingFilter Tomcat