2009-12-06 13 views
1

Quand je lance une requête directement dans MySQL en utilisant phpMyAdmin permet (tiret long, pas normal -), mais quand je lance cette requête de mon code PHP, il se tourne vers –.caractère encodage problème en PHP et MySQL

Si vous codez - il viendra %E2%80%93 (en JavaScript). %E2 devient â, %80 devient et %93 devient . Je ne comprends pas quand j'exécute la requête dans phpMyAdmin il enregistre des données comme , mais quand j'exécute la requête dans mon code PHP, alors cela ne fonctionne pas comme je le souhaite.

Répondre

1

Quel encodage de caractères utilisez-vous dans votre tableau? Une fois connecté au DB en php essayer d'exécuter ceci:

mysql_query('SET NAMES utf8'); //if you use utf-8 
+0

Voulez-vous dire Collation du dossier? C'est "latin1_swedish_ci". BTW, votre suggestion a fonctionné. Merci beaucoup! – Debiprasad

+0

@Debiprasad: Sauf si vous êtes swdish, vous devriez passer à utf-8. Cela rend la vie plus facile. – erenon

+0

Même si vous * êtes * suédois, un passage en UTF-8 ne fera pas de mal. :) –

0

Peut-être le moteur phpMyAdmin s'échappe-t-il de la longue ligne de tir au tableau de bord normal?

+0

Non, il n'échappe pas au tiret long pour un tiret normal. – Debiprasad

0

Probablement vous manque de mettre l'étiquette rencontré sur votre HTML, avez-vous écrire la ligne suivante dans la tête de votre document HTML?

<meta http-equiv="content-type" content="text/html; charset=utf-8" /> 

Sinon, le navigateur l'interprète comme ISO-8859-1.

Vous devriez utiliser le même codage partout, sur votre base de données, sur votre connexion et sur votre document html.

Pour vous assurer d'avoir une table utf-8, exécutez l'instruction suivante et vérifiez qu'elle indique CHARSET = utf8 presque à la fin.

SHOW CREATE TABLE tableName; 
+0

Non, ce n'est pas le problème. Je vous remercie. – Debiprasad

+0

La requête renvoie: DEFAULT CHARSET = latin1 – Debiprasad