6
votes

Base de données PHP MySQL Strange caractères

J'essaie de générer des informations sur les produits stockés dans une base de données MySQL, mais il écrit des caractères étranges, comme un diamant avec une marque d'interrogation à l'intérieur.

Je pense que c'est peut-être un problème de codage / utf8, mais j'ai spécifié le codage que je veux:

est-ce correct? Que dois-je vérifier?


1 commentaires

Un post à PHPadvent sur le même problème de caractère étrange: phpadvent.org/2009/character -Sets-by-Paul-Reinheimer


4 Réponses :


20
votes

Si seules les données provenant de la base de données ont des caractères étranges, assurez-vous que la connexion MySQL est également dans UTF8 à l'aide de: xxx pré>

avant toute autre requête. Sinon, si les caractères apparaissent également dans les fichiers «manuscrites», assurez-vous que les fichiers sont enregistrés comme UTF-8 dans votre éditeur. Vous pouvez également essayer de définir l'en-tête Charset via PHP: P>

header('Content-type: text/html; charset=UTF-8');


1 commentaires

mysql_query ("SET NAMES UTF8"); travaillé pour mon problème d'extraction de WordPress Post (point d'interrogation dans un diamant). Merci



1
votes

4
votes

La dernière fois que j'ai eu ce problème, la solution était similaire à ce que Tatu Ulmanen a dit, mais légèrement différent ...

Donc, si sa solution ne fonctionne pas, essayez de remplacer P>

mysql_query("SET NAMES latin1");


0 commentaires

5
votes

Je suppose que vous voulez que le résultat soit dans utuf8

  • enregistrer votre script php utf8 codé
  • Assurez-vous que votre en-tête HTTP (ou certaines balises Meta) indique que la sortie est UTF8
  • Tous les tables de MySQL devraient être UTF8
  • Dernier point mais non le moindre, la connexion entre le client et le serveur devrait être UTF8. (Cela pourrait être traité quelque part dans le réglage php.ini ou en faisant la requête suivante contre le dB: Set de caractère_set_results = 'utf8', caractère_set_client = 'utf8', caractère_set_connection = 'utf8', caractère_set_database = 'utf8', caractère_set_server = 'utf8'

    Si vous suivez tous les 4 points, vous ne devriez jamais avoir de problème avec des codages brisés.


0 commentaires