Pourquoi les citations se transforment en caractères amusants lorsqu'ils sont soumis dans un formulaire HTML?
J'ai un formulaire HTML, et certains utilisateurs de copier/coller du texte à partir de MS Word. Quand il y a des apostrophes ou des guillemets, il est traduit dans de drôles de caractères comme:
'€™ et de l'’
La colonne de base de données est interclassement utf8_general_ci.
Comment puis-je obtenir les caractères à afficher?
Edit:
Le problème est résolu. Voici comment je l'ai corrigé:
Couru mysql_query("SET NAMES 'utf8'");
avant d'ajouter/récupération de la base de données. (merci à Donal de commentaire ci-dessous).
Et quelque peu étrange, la fonction php urlencode($text)
a été appliquée lors de l'affichage, de sorte que, a dû être retiré.
J'ai aussi fait en sorte que les en-têtes de la page et de la requête ajax/réponse étaient tous utf8.
source d'informationauteur Steve
Vous devez vous connecter pour publier un commentaire.
Cela ressemble à un cas classique de l'unicode (UTF-8 le plus probable) caractères interprétés comme iso-8859-1. Il y a quelques endroits le long de la voie où les personnages peuvent être corrompues. Tout d'abord, le navigateur du client a pour envoyer les données. Il peut corrompre les données si il ne peut pas convertir correctement les caractères de la page de codage de caractères. Ensuite, le serveur lit les données et décode les octets en caractères. Si le client et le serveur sont en désaccord à propos de l'encodage utilisé, les caractères seront corrompus. Les données sont ensuite stockées dans la base de données; une fois encore, il y a risque de corruption. Enfin, lorsque les données sont écrites sur la page (pour l'affichage dans le navigateur), le navigateur peut interpréter les octets si la page ne s'affiche pas de manière adéquate l'indiquer l'encodage.
Vous devez vous assurer que vous utilisez UTF-8 partout. La valeur par défaut pour les pages web est en iso-8859-1, de sorte que vos pages web doivent être servis avec le header Content-Type ou la balise meta
(assurez-vous que vous êtes vraiment au service du texte dans cet encodage).
Par l'utilisation de l'UTF-8 ainsi que toutes les pièces de la procédure vous permettra d'éviter les problèmes avec les navigateurs web et les bases de données.
Vérifier l'encodage de la page utilise. L'encoder en UTF-8, et ajouter une balise meta décrivant l'encodage:
Nous avons une fonction PHP qui tente de nettoyer le gâchis avec des guillemets"". C'est un peu un gâchis, car il est cultivé un peu naturellement à mesure que les cas surgi au cours de l'élaboration de prototypes. Il peut être d'une certaine aide, mais: