Cet article parle principalement des différences entre urlencode et rawurlencode en PHP. Il a une certaine valeur de référence. Les amis intéressés peuvent en apprendre davantage.
Contexte de l'événement :
Daniel m'a dit que lors de la création de mini-jeux h5, le back-end devait transmettre les informations relatives à l'utilisateur au front-end. Le contenu de sortie comprenait : l'identifiant de l'utilisateur, le surnom de l'utilisateur et d'autres champs, utilisez la méthode get pour transmettre les paramètres. Le backend utilise le langage PHP pour formater et encoder le surnom chinois, en utilisant la fonction urlencode couramment utilisée.
Un problème survient :
Utilisez la fonction urlencode pour formater La fonction urlencode codera les espaces comme : +
De. Bien sûr, le front-end peut décoder et remplacer + par des espaces lors de la réception. Mais il s’agit d’une étape supplémentaire, très gênante. Parfois, notre interface de données est développée pour des tiers ou autres, et ils ne suivent pas nécessairement cette idée lors du traitement.
Par exemple, si le front-end utilise Python pour le recevoir et le décode et l'affiche directement, le pseudo aura un signe +.
Solution :
Utiliser rawurlencode
En PHP, urlencode encode les espaces sous forme de signe +, rawurlencode encode les espaces en %20
Manuel PHPExplication des deux fonctions de :
urlencode : Renvoie une chaîne. Renvoie une chaîne. Tous les caractères non alphanumériques de cette chaîne, à l'exception de -_, seront remplacés par un signe de pourcentage (%) suivi de deux chiffres hexadécimaux, les espaces sont codés sous forme de signes plus (+). Cet encodage est le même que l'encodage des données POST du formulaire WWW et le même que l'encodage du type de média de application/x-www-form-urlencoded. Pour des raisons historiques, cet encodage diffère de l'encodage RFC1738 (voir rawurlencode()) dans les espaces de codage sous forme de signes plus (+).
rawurlencode : Renvoie une chaîne dans laquelle tous les caractères non alphanumériques sauf -_ seront remplacés par un signe de pourcentage. (%) suivi de deux chiffres hexadécimaux. Ce codage, décrit dans la RFC 1738, est destiné à protéger les caractères littéraux contre l'interprétation comme des délimiteurs d'URL spéciaux, et à protéger le format de l'URL contre toute déformation par les conversions de caractères utilisées par le support de transport (comme certains systèmes de messagerie).
Ainsi, lorsque vous utilisez PHP pour transférer l'encodage chinois, utilisez rawurlencode
Cours connexes : Tutoriel vidéo PHP
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!