Maison Java JavaBase Solution à la requête tronquée en Java

Solution à la requête tronquée en Java

Nov 26, 2019 am 10:19 AM
java

Solution à la requête tronquée en Java

Problèmes :

Lors de l'envoi d'une requête au serveur via une requête get, si les paramètres de la requête sont en chinois, les paramètres reçus par le serveur seront tronqués.

Analyse des causes et solutions aux caractères tronqués :

1. À propos du décodage et de l'encodage

Encodage : '中'→1110001

Décodage : 1110001→'中'

Caractères tronqués : différents jeux de caractères sont utilisés dans les processus d'encodage et de décodage

2 Problèmes d'encodage et de décodage de caractères dans les applications Web

(1) Processus de demande. :

<1>Requête GET

Le côté navigateur est encodé en UTF-8, il doit donc également être décodé en UTF-8 côté serveur

Depuis les paramètres de la requête GET sont attachés derrière l'adresse URL, le jeu de caractères de décodage de l'adresse URL doit donc être unifié.

Solution :

Trouvez le premier connecteur dans le fichier de configuration Tomcat server.xml et ajoutez l'attribut suivant URIEncoding=UTF-8

<2>POST request

Exécuter avant d'obtenir les paramètres de la requête : request.setCharacterEncoding("UTF-8");

(2) Processus de réponse

(1) Spécifier le jeu de caractères d'encodage de la réponse data

(2) Indiquez au navigateur quel jeu de caractères doit être utilisé pour décoder les données de réponse

<1> Jeu de caractères de décodage"

<2>Définissez le jeu de caractères d'encodage : indiquez au navigateur le type de contenu des données de réponse actuelles : réponse.setContentType("text/html;charset=UTF-8"); Il Il convient de noter qu'il doit être spécifié dans la réponse.getWriter() définie avant, sinon il ne sera pas valide.

Suggestion :

Tous les filtres ne fonctionnent que sur les requêtes POST. La définition de la méthode de codage des caractères dans la page jsp ne fonctionne que sur les requêtes POST lorsque le formulaire est soumis, et sur les requêtes GET, elle ne peut pas être définie. son codage de caractères.

utilise la méthode de codage par défaut dans les requêtes GET, donc pour les requêtes GET, vous devez définir URIEncoding="UTF-8" dans le fichier server.xml puis redémarrer TOMCAT peut résoudre le problème de Caractères chinois tronqués,

, mais il n'est pas recommandé de transmettre des paramètres chinois dans les requêtes de lien hypertexte href, et il n'est pas non plus recommandé de transmettre des paramètres chinois dans les requêtes GET. " keywords").getBytes("8859_1"));Bien que cette méthode résolve temporairement le problème des caractères chinois tronqués,

, cependant, le problème des caractères chinois tronqués peut encore survenir lors d'une maintenance ultérieure et d'un déploiement sur d'autres serveurs, son utilisation n’est donc pas recommandée.

Pour les demandes de publication, écrivez simplement le code suivant dans Servlet ou jsp pour résoudre le problème des caractères chinois tronqués transmis depuis le formulaire

&quot;reply.jsp?title=&quot;+java.net.URLEncoder.encode(keywords)
Copier après la connexion

Comprendre :

Et pour Get demandes, étant donné que les paramètres de la demande seront ajoutés à l'URL dans la barre d'adresse, la méthode de traitement ci-dessus ne peut pas être utilisée. Cela devrait ressembler à ceci :

 request.setCharacterEncoding(&quot;utf-8&quot;);
Copier après la connexion

Une autre façon consiste à obtenir les paramètres de la requête, puis à ré-encoder les valeurs des paramètres de la requête, c'est-à-dire à les convertir d'abord en un tableau d'octets, puis à re-décoder le tableau d'octets. dans une chaîne.

   String str=request.getQueryString();
   //使用URLDecoder解码字符串
   String str1=java.net.URLDecoder.decode(str,&quot;utf-8&quot;);
   String[] paraStrings=str1.split(&quot;&amp;&quot;);
    //paraStrings[0]就是第一个参数,依次类推...
   for(String paraString : paraStrings)
   {
         String[] nameValue=paraString.split(&quot;=&quot;);
         //nameValue[0]就是表单的name,nameValue[1]就是表单name对应的值
   }
Copier après la connexion

Conclusion : lors du passage des paramètres chinois, il est préférable d'utiliser la requête POST pour soumettre. Différents paramètres de serveur peuvent avoir différentes méthodes de codage, et différents paramètres de système d'exploitation peuvent avoir différentes méthodes de codage.

Recommandé :

Tutoriel de base Java

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Article chaud

Musée de deux points: Guide de localisation de Bungle Wasteland
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Musée de deux points: Guide de localisation de Bungle Wasteland
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Racine carrée en Java Racine carrée en Java Aug 30, 2024 pm 04:26 PM

Racine carrée en Java

Nombre parfait en Java Nombre parfait en Java Aug 30, 2024 pm 04:28 PM

Nombre parfait en Java

Générateur de nombres aléatoires en Java Générateur de nombres aléatoires en Java Aug 30, 2024 pm 04:27 PM

Générateur de nombres aléatoires en Java

Numéro Armstrong en Java Numéro Armstrong en Java Aug 30, 2024 pm 04:26 PM

Numéro Armstrong en Java

Weka en Java Weka en Java Aug 30, 2024 pm 04:28 PM

Weka en Java

Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

Questions d'entretien chez Java Spring

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Break or Return of Java 8 Stream Forach?

Numéro de Smith en Java Numéro de Smith en Java Aug 30, 2024 pm 04:28 PM

Numéro de Smith en Java

See all articles