2010-07-21 4 views
1

Dans ma base de données dans certains domaines les données sont montrant comme comme dans les captures d'écran suivantes:Comment écrire des caractères spéciaux dans MySQL via PHP?

  1. http://i31.tinypic.com/2637l9f.jpg
  2. http://i27.tinypic.com/1ihh6d.jpg
  3. http://i26.tinypic.com/2yklzb4.jpg
  4. http://i31.tinypic.com/2vbshtf.jpg

J'utilisé mysql_real_escape_string tout en insérant mes données dans la base de données et htmlspecialchars lors de l'affichage.

Quelqu'un peut-il me dire pourquoi ils ressembler à cela, et ce qui est la solution?

+0

Désolé, je vais peut-être aveugle, mais ce qui est avec les données dans ce format? EDIT: Ah, avant qu'ils n'étaient pas des liens, mais étaient dans un bloc de code. Je pensais qu'il disait que les urls étaient stockés comme ceux ci-dessus! – Stephen

+0

@Stephen: quand vous avez assez réputation, vous pourrez visualiser/modifier une autre source de message. Cliquez sur le lien d'horodatage bleu après 'edited' ici ci-dessus et voir. – BalusC

+0

@BalusC Merci pour le conseil, même si je le savais déjà. J'ai juste eu un moment d'hésitation et je pensais que le 'problème' était que la base de données stockait des urls en clair, n'ayant pas été encodée pour les pages web. Ou quelque chose comme ça. Je m'attendais juste à ce que quelqu'un incorpore une image, pas un lien vers celle-ci! XD – Stephen

Répondre

2

C'est Mojibake. Votre code PHP et MySQL ne sont pas prêts pour World Domination.

Pour fixer correctement, passer par this cheatsheet et veiller à ce que chaque couche utilise UTF-8.


Le mysql_real_escape_string() essentiellement ne vous empêche de SQL injectionattacks et htmlspecialchars() essentiellement que vous empêche de XSSattacks. Ils ne facilitent pas l'encodage ou le décodage des caractères. Le jeu de caractères utilisé est responsable de cela. Votre problème est que vous n'êtes pas cohérent dans l'utilisation du charset et/ou que le charset que vous avez choisi/utilisé ne prend pas en charge les caractères que le client est entré et/ou que vous souhaitez utiliser.