cari

Rumah  >  Soal Jawab  >  teks badan

Terdapat sedikit keraguan tentang bagaimana penapis servlet di Java menyelesaikan masalah aksara Cina yang kacau-bilau Adakah perlu menggunakan entrySet traversal di sini?

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!

習慣沉默習慣沉默2787 hari yang lalu1109

membalas semua(2)saya akan balas

  • 淡淡烟草味

    淡淡烟草味2017-05-27 17:43:44

    Ini yang anda maksudkan:

    for (String[] values : map.values()) {
        for (int i = 0; i < values.length; i ++) {
            values[i] = new String(values[i].getBytes(StandardCharsets.ISO_8859_1, encode));
        }
    }
    

    Saya rasa tiada apa-apa yang salah dengannya.

    balas
    0
  • 给我你的怀抱

    给我你的怀抱2017-05-27 17:43:44

    Sama sekali tidak perlu, lihat kod sumber SetCharacterEncodingFilter Tomcat

    request.setCharacterEncoding(...)

    balas
    0
  • Batalbalas