Erreur de décodage de l'URL
曾经蜡笔没有小新
曾经蜡笔没有小新 2017-06-23 09:13:56
0
2
831

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

. . . .

曾经蜡笔没有小新
曾经蜡笔没有小新

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

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 :

<%@ page import="java.net.URLEncoder" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%
    System.out.println("name=" + request.getParameter("name"));
%>
<a href="?name=<%=URLEncoder.encode("你好", "UTF-8")%>">你好</a>
<a href="?name=你好">你好</a>

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.

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