Question

J'ai une petite application ajax construite avec php.

Utilisation de phpMyAdmin J'ai défini une base de données mysql sur utf-8 et y ai importé un fichier texte contenant des données utf-8.

Cela fonctionnait bien sur une machine Windows avec easyphp, après avoir ajouté character-set-server = utf8 et default-character-set = utf8 au fichier my.cnf.

J'ai maintenant essayé de déplacer ceci vers un serveur de production où je n'ai pas accès au fichier de configuration et où des caractères tels que des trémas ne sont pas affichés.

Y at-il quelque chose qui peut être défini dans le code php (pas le fichier de configuration) pour résoudre ce problème, ou une commande que je peux donner à mysql?

J'ai essayé ALTER DATABASE vweb_50 DEFAULT CHARACTER SET, utf8 COLLATE utf8_bin avec phpMyAdmin pour essayer utf8_general_ci, mais cela ne faisait aucune différence.

Était-ce utile?

La solution

Il y a plusieurs choses à faire ici, et je ne suis pas sûr de bien comprendre votre problème, mais si c'est le cas, je pense que la plupart des problèmes peuvent être résolus avec les fonctions PHP utf8_encode et utf8_decode :

  • utf8_encode
    • Encode une chaîne ISO-8859-1 en UTF-8
  • utf8_decode
    • Cette fonction décode les données, supposées être codées UTF-8, en ISO-8859-1.

Consultez également htmlentities , si nécessaire.

Autres conseils

Si vous utilisez utf-8 dans toute l'application (ce que je recommanderais), vous n'avez pas besoin des fonctions utf8_encode / decode. Avez-vous vérifié le codage de votre page? Le serveur est probablement configuré pour envoyer le jeu de caractères iso-8859-1, tandis que votre environnement de test envoie le fichier utf-8. Définissez le codage avec un en-tête Content-Type:

header("Content-Type: text/html; charset=utf-8");
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top