Il y a un petit doute sur la façon dont le filtre de servlet en Java résout le problème des caractères chinois tronqués ici ?
習慣沉默
習慣沉默 2017-05-27 17:41:44
0
2
1066

Le code de filtre pour résoudre le problème des caractères chinois tronqués trouvés sur Internet contient un paragraphe similaire au suivant :

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;  

Ici, nous modifions uniquement la valeur définie dans la carte. Cet ensemble de valeurs est une collection de tableaux String. En fait, nous modifions uniquement les éléments du tableau String. Je pense qu'il n'est pas nécessaire de retirer l'entrySet et de le parcourir. Vous pouvez obtenir le même effet en supprimant simplement les valeurs et en les parcourant. Je l'ai pratiqué moi-même et j'ai confirmé ma conjecture. Mais presque toutes les informations que je vois sur Internet passent par EntrySet. Pourquoi ? Y a-t-il des failles dans le simple franchissement des valeurs définies ? J'espère que les experts pourront dissiper la confusion !

習慣沉默
習慣沉默

répondre à tous(2)
淡淡烟草味

Voici ce que tu veux dire :

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));
    }
}

Je ne pense pas qu’il y ait quelque chose de mal à cela.

给我你的怀抱

Complètement inutile, voir le code source du SetCharacterEncodingFilter de Tomcat

request.setCharacterEncoding(...)

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal