J'ai une chaîne qui est dans ma base de données comme 中华武魂
lorsque je poste ma demande pour récupérer les données via mon site Web Je reçois les données au serveur dans le format %E4%B8%AD%E5%8D%8E%E6%AD%A6%E9%AD%82
Traduire des données URLENCODED en UTF-8 en PHP
Quelles étapes de décodage dois-je prendre pour pouvoir revenir à la forme utilisable? Vous nettoyez également l'entrée utilisateur pour vous assurer qu'elle n'essaiera pas d'une attaque par injection SQL? (chaîne d'échappement avant ou après codage?)
EDIT:
rawurldecode(); // returns "ä¸åŽæ¦é‚"
urldecode(); // returns "ä¸åŽæ¦é‚"
public function utf8_urldecode($str) {
$str = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($str));
return html_entity_decode($str,null,'UTF-8');
}
// returns "ä¸åŽæ¦é‚"
... qui fait fonctionne quand je tente de l'utiliser dans une instruction SQL.
Je pense parce que je faisais un echo
et die();
sans spécifier un en-tête de UTF-8 (donc je suppose que me lisait un latin comme)
Merci pour l'aide!
Vous ne semblez pas utiliser UTF-8 pour votre sortie mais Windows-1252. – Gumbo