Problème : le texte chinois envoyé par Android au serveur d'arrière-plan est décodé en caractères tronqués. .
Environnement :
1. tomcat,在server.xml中已经明确了“utf-8". 2. 安卓已经明确了使用Utf-8编码 3. 在后台使用` java.net.URLDecoder.decode(url, "utf-8");`对url进行解码,但是解码出错。。中文是”??“。
Cela devrait être un problème d'encodage, mais. . .
Merci beaucoup. . .
De plus, j'ai utilisé l'instruction suivante pour tester l'encodage :
if (url.equals(new String(url.getBytes("iso8859-1"), "iso8859-1"))) { url = new String(url.getBytes("iso8859-1"), "utf-8"); System.out.println("ios8859-1"); } if (url.equals(new String(url.getBytes("GB2312"), "GB2312"))) { url = new String(url.getBytes("GB2312"), "utf-8"); System.out.println("gb2312"); }
Sortie
ios8859-1 gb2312
. . . .
Y a-t-il un filtre d'encodage ajouté à l'arrière-plan ?
URLEncode/Decode est destiné aux valeurs des paramètres dans l'URL afin d'éviter les conflits avec le format de l'URL lui-même. Tomcat décodera automatiquement les valeurs des paramètres d'URL, il vous suffit donc de les obtenir directement. Par exemple, cette JSP :
En fait, il n'y a aucune différence entre les deux liens "Bonjour". Vous pouvez ouvrir le code source de la page Web pour voir leurs adresses de lien. L'un est codé et l'autre ne l'est pas. Mais après avoir cliqué, la console affichera le message. valeur correcte, ce qui signifie
request.getParameter("name")
Le contenu résultant est exactement le même.