Maison >développement back-end >Problème PHP >Comment résoudre le problème de requête php tronquée

Comment résoudre le problème de requête php tronquée

藏色散人
藏色散人original
2020-10-20 09:39:402314parcourir

La solution à la requête php tronquée : ouvrez d'abord le fichier server.xml de Tomcat ; puis définissez l'attribut de l'élément "URIEncoding="UTF-8"".

Comment résoudre le problème de requête php tronquée

Recommandé : "Tutoriel vidéo PHP"

demande, réponse Problèmes et solutions de code tronqué chinois

Le code tronqué de la requête fait référence à : les paramètres de requête envoyés par le navigateur au serveur contiennent des caractères chinois, et la valeur du paramètre de requête obtenue par le serveur est tronquée

la réponse est tronquée ; le code fait référence à : Les données envoyées par le serveur au navigateur contiennent des caractères chinois et le navigateur affiche des caractères tronqués

La raison des caractères tronqués : qu'il s'agisse de caractères tronqués ou de requêtes ; réponse caractères tronqués, cela est en fait causé par le client. Cela est dû à l'incohérence entre le format d'encodage utilisé par le navigateur et le serveur. Prenons l'exemple de la requête tronquée : le navigateur envoie une requête au serveur. Étant donné que la communication entre le navigateur et le serveur est essentiellement un flux de socket, les paramètres de la requête (caractères) doivent d'abord être convertis en octets, ce qui correspond au processus de codage. . Le serveur reçoit. Les paramètres de la requête sont décodés (octets convertis en caractères) puis encapsulés dans l'objet de la requête. Si le codage du client n'est pas cohérent avec le décodage du serveur, la valeur du paramètre de requête obtenu via la requête sera tronquée.

Solution :

1. La réponse est tronquée

Les données envoyées par le serveur au navigateur sont codées conformément à la norme ISO-8859-. 1 par défaut, et le navigateur le reçoit. Après avoir reçu les données, elles sont décodées selon le jeu de caractères par défaut et affichées. Si le jeu de caractères de décodage par défaut du navigateur n'est pas ISO-8859-1, des caractères tronqués apparaîtront.

Pour les réponses tronquées, il vous suffit de spécifier un jeu de caractères d'encodage côté serveur, puis d'informer le navigateur de décoder en fonction de ce jeu de caractères. Il existe trois manières :

1. A. Définir l'encodage côté serveur

response.setCharacterEncoding("utf-8");

La valeur par défaut est ISO-8859; -1; La méthode doit être définie avant réponse.getWriter()

B. Informer le navigateur du format des données envoyées par le serveur

réponse.setHeader("contentType", "text/ html; charset=utf- 8");

2. A. Informer le navigateur du format des données envoyées par le serveur

response.setContentType("text/html;charset=utf- 8");

Équivalent à réponse.setHeader("contentType", "text/html; charset=utf-8"); il remplacera en fait réponse.setCharacterEncoding("utf-8"). Pendant le développement , il vous suffit de définir

B. Définir l'encodage côté serveur

response.setContentType("text/html;charset=utf-8");

3 . A. Définir le codage côté serveur

response.setCharacterEncoding("utf-8");

B. Le navigateur utilise utf-8 pour le décodage

                                                                                                                , définir l'encodage côté serveur

response.setCharacterEncoding("utf-8");

B Informer le navigateur du format de données envoyé par le serveur

response.setContentType ("text /html;charset=utf-8");

C. Le navigateur utilise utf-8 pour le décodage

        

Voici comment je l'ai configuré, juste au cas où ;

2. La requête est tronquée

Il existe trois manières d'accéder depuis le navigateur : saisir directement l'URL dans la barre d'adresse pour accéder, cliquer sur le lien hypertexte dans la page pour y accéder, et soumettez le formulaire pour y accéder. Le navigateur de la première méthode d'accès code les paramètres selon UTF-8 par défaut, et les navigateurs des deux dernières méthodes d'accès codent les paramètres selon le codage d'affichage de la page actuelle. Par conséquent, pour demander des caractères tronqués, il vous suffit de définir le format de décodage correspondant côté serveur. En raison des différentes méthodes d'accès, les navigateurs disposent également de formats d'encodage différents pour les paramètres. Afin de faciliter le traitement, l'accès via des hyperliens et des formulaires doit également être au format UTF-8, c'est-à-dire que l'encodage pour l'affichage de la page actuelle doit également utiliser UTF-. 8, alors parcourez Le processeur utilisera uniformément UTF-8 pour encoder les paramètres.

A. Méthode Post

La méthode post appartient à la soumission du formulaire et les paramètres existent dans le corps de la requête.

request.setCharacterEncoding("utf-8")

B. get méthode

Les paramètres soumis par la méthode get suivront l'uri dans la ligne de requête, et le serveur suivra le décodage par défaut avec iso-8859-1. À l'heure actuelle, il existe deux façons de résoudre le code tronqué :

Méthode 1 : modifier l'encodage par défaut du paramètre uri côté serveur

Dans le server.xml de Tomcat, définissez simplement l'attribut URIEncoding="UTF-8" de l'élément. (Cet attribut n'est pas défini par défaut)

Par exemple : Remarque : 1. Définissez l'attribut de l'élément useBodyEncodingForURI="true", ce qui signifie que le corps de la requête et l'uri utilisent le même format d'encodage. En définissant ces deux attributs, vous pouvez résoudre à la fois le code tronqué dans la méthode get et le code tronqué dans la méthode post. 2. Spécifiez que le serveur décode GET et POST conformément à UTF-8 en modifiant le serveur.

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:
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