Maison > Article > développement back-end > Raisons et solutions pour les caractères chinois tronqués dans les paramètres d'URL php [Résumé]
PHP est un langage de développement largement utilisé qui peut être utilisé pour créer des applications Web et des pages Web dynamiques. Cependant, vous rencontrerez divers problèmes lors de l'utilisation de PHP. L'un des problèmes les plus difficiles est le problème des paramètres chinois tronqués dans l'URL. Dans cet article, nous explorerons la cause profonde de ce problème et comment le résoudre.
Dans le protocole HTTP, l'URL est composée de plusieurs parties, notamment le protocole, le nom d'hôte, le chemin du fichier et la chaîne de requête, etc. Lorsqu'une URL comprend des caractères chinois, ces caractères doivent être codés pour garantir que les serveurs et les navigateurs puissent les interpréter correctement. Cette conversion d'encodage utilise une méthode appelée encodage d'URL. Le codage URL convertit tous les caractères non alphanumériques au format d'un signe de pourcentage (%) suivi de deux chiffres hexadécimaux.
Par exemple, le caractère chinois "安" est représenté par l'encodage UTF-8 comme "E5 AE 89". Une fois l'URL encodée, elle devient "%E5%AE%89". Le navigateur envoie cet encodage au serveur pour lui indiquer de transmettre « %E5%AE%89 » dans la chaîne de requête au lieu du caractère chinois d'origine « 安 ».
Cependant, lorsque le code PHP tente de transmettre les paramètres chinois dans l'URL, il peut ne pas les analyser correctement, ce qui entraîne des caractères tronqués. En effet, PHP utilise le jeu de caractères ISO-8859-1 par défaut pour analyser les paramètres dans les requêtes GET. Les caractères chinois au format de codage UTF-8 n'existent pas dans le jeu de caractères ISO-8859-1, donc PHP les analysera en caractères tronqués.
Afin de résoudre le problème des paramètres chinois tronqués dans les URL, nous devons connaître la méthode d'encodage des paramètres et les convertir dans un format d'encodage reconnaissable par PHP. Voici deux méthodes :
Convertir vous-même l'encodage manuellement est l'un des moyens les plus simples de résoudre ce problème. Nous pouvons utiliser les fonctions intégrées de PHP pour encoder la conversion. Par exemple, pour le caractère chinois "安" mentionné ci-dessus, nous pouvons utiliser le code suivant pour le convertir du format d'encodage UTF-8 au format d'encodage ISO-8859-1 :
$url_param = '%E5%AE%89'; $decoded_param = urldecode($url_param); $encoded_param = mb_convert_encoding($decoded_param, 'ISO-8859-1', 'UTF-8'); echo $encoded_param; // 输出:安
Dans ce code, nous utilisons d'abord urldecode( ) La fonction convertit les paramètres codés en URL en texte brut. Nous utilisons ensuite la fonction mb_convert_encoding() pour convertir le texte de l'encodage UTF-8 en encodage ISO-8859-1 et stockons le résultat dans la variable $encoded_param.
Si vous ne souhaitez pas effectuer manuellement la conversion de l'encodage, nous pouvons également modifier la configuration du serveur pour convertir automatiquement les paramètres d'URL du format d'encodage UTF-8 au format d'encodage ISO-8859-1 . Sur le serveur Apache, nous pouvons y parvenir dans le répertoire racine Web en modifiant le fichier .htaccess. Ajoutez la ligne suivante dans le fichier .htaccess :
AddDefaultCharset ISO-8859-1 php_value default_charset "iso-8859-1"
Cela indiquera à Apache d'utiliser le format d'encodage ISO-8859-1 lors de l'analyse de la requête, et de transmettre ce format d'encodage à PHP afin que PHP puisse analyser correctement les paramètres chinois dans le fichier .htaccess. OBTENIR la requête.
Dans cet article, nous avons exploré la cause profonde du problème des paramètres chinois tronqués dans les URL et introduit deux solutions. La conversion manuelle du format d'encodage des paramètres d'URL peut parfois sembler fastidieuse, mais c'est la solution la plus simple et la plus fiable. D'un autre côté, en modifiant la configuration du serveur, nous pouvons automatiquement convertir les paramètres d'URL du format d'encodage UTF-8 au format d'encodage ISO-8859-1, mais cela nécessite une configuration et des autorisations de serveur correspondantes. Quelle que soit la méthode utilisée, tant que nous comprenons parfaitement la connaissance du codage d'URL et du codage PHP, nous pouvons résoudre le problème des paramètres chinois tronqués dans les URL et garantir que nos applications Web fonctionnent normalement.
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!