2009-09-13 4 views
0

La base de données contient une tonne d'entrées qui n'ont pas été échappées parce qu'elles ont été saisies manuellement lorsqu'elles ont été insérées. Elles ne ressemblent pas à celles de l'entrée, mais lorsque je les affiche, elles ont un caractère bizarre. en PHP. Avant de mettre quelque chose dans la base de données j'utiliserais généralement mysqli_real_escape_string et ferais de même quand j'irai récupérer les données, mais puisque les données sont déjà stockées sans utiliser real_escape comment les afficher correctement?La base de données MySQL a des guillemets simples non échappés dans les entrées ... Comment les montrer?

Le caractère étant affiché à la place des guillemets simples ressemble à ceci:

Si elle aide les données sont stockées sous forme de « texte ».

Merci!


Pour les futurs utilisateurs du même problème est ici les étapes:

  • Vérifiez vos têtes de site Web pour voir ce que l'encodage est
  • Vérifiez vos colonnes de table MySQL et assurez-vous qu'ils correspondent.
  • S'ils ne les modifient pas pour correspondre. utf8_general dans mysql et utf8 dans mon HTML a fonctionné pour moi
  • Vous devrez revenir en arrière à travers les vieilles tables de mysql et les mettre à jour afin que le nouvel encodage soit réglé correctement.
  • Les nouvelles entrées devraient fonctionner correctement
  • Lorsque vous exportez vos résultats en PHP (ou je suppose que quelle que soit la langue que vous utilisez), en fonction de si vous utilisez une validation, vous devrez peut-être utiliser mysqli_real_escape_string ou une fonction similaire, tels que stripslashes()

Répondre

3

Vous aurez besoin de lire l'encodage de texte.

La solution habituelle est de vous assurer que tout (le codage de type de contenu de vos pages, et votre mysql) sont en UTF-8

Les chances sont vos données Latin1 et vous affichez UTF-8 ou versa versa

+2

+1 Exactement et voici une bonne introduction aux problèmes d'encodage: http://www.joelonsoftware.com/articles/Unicode.html – Andomar

+0

merci pour les gars d'entrée ... Mon encodage sur le site est utf- 8, et j'ai changé la colonne de la base de données pour être utf8-general-ci, mais il a toujours le même problème ... tout ce que je devrais changer? – krx

+1

Il me semble que vous devez savoir quelles sont ces données dans votre base de données. Vous devrez peut-être également convertir les données existantes. D'abord, je testerais que lorsque vous mettez de nouvelles données, puis que vous les affichez, elles sortent correctement. Ensuite, comprendre comment mettre à niveau/convertir les données existantes dans votre base de données – JasonWoof

Questions connexes