2009-09-03 9 views
0

C'est ce que j'ai essayé jusqu'à présent, par la modification php.ini: default_charset = "utf-8"problème de chaîne de codage utf-8 avec PHP et MySQL?

Voici comment MySQL est configuré:

mysql> show variables like '%char%'; 
+--------------------------+-----------------------------------------------+ 
| Variable_name   | Value           | 
+--------------------------+-----------------------------------------------+ 
| character_set_client  | utf8           | 
| character_set_connection | utf8           | 
| character_set_database | utf8           | 
| character_set_filesystem | binary          | 
| character_set_results | utf8           | 
| character_set_server  | utf8           | 
| character_set_system  | utf8           | 
| character_sets_dir  | f:\wamp\bin\mysql\mysql5.0.45\share\charsets\ | 
+--------------------------+-----------------------------------------------+ 
8 rows in set (0.00 sec) 

Mais cela ne fonctionne pas.

J'ai jeté les données, il est au format utf-8 avant et après traitement par PHP.

Mais après l'insertion dans MySQL par PHP,

il devient un grand désordre (par phpmyadmin),

Les données sont devenues quelque chose comme ceci après l'insertion dans la base de données:

æ ± YE

Le code sont toutes choses comme:

$dml = "insert into profiles(accountId,name,thumbnail,sex,homeAddr,livingAddr,peoples,married,politicalStatus,qq,mobilePhone,telephone,homePage) 
      value($accountId,'{$_POST['name']}',{$_POST['thumbnail']},{$_POST['sex']},'{$_POST['homeAddr']}','{$_POST['livingAddr']}','{$_POST['peoples']}',{$_POST['married']},'{$_POST['politicalStatus']}',{$_POST['qq']},{$_POST['mobilePhone']},{$_POST['telephone']},{$_POST['homePage']})"; 
mysql_query($dml,$con); 
+0

phpMyAdmin est-il configuré pour utiliser le jeu de caractères correct? – shadowhand

Répondre

0

S'il vous plaît être plus précis sur votre problème. Publiez le code qui cause le problème et dites quelque chose sur la façon dont cela "ne fonctionne pas". Sans code, nous ne pouvons pas résoudre votre problème.

Cela dit, assurez-vous que vos jeux de caractères phpMyAdmin sont correctement définis. Je pense vous essayez de dire que cela semble mal dans phpMyAdmin, auquel cas c'est probablement là que votre problème est.

Editer: On ne sait pas ce qui "ce qui est pire, les données redeviennent normales après l'avoir lu depuis MySQL et affichées sur la page!" veux dire.

Votre commentaire sur l'autre réponse ne prouve vraiment rien. Ce n'est pas parce qu'il semble juste dans phpMyAdmin qu'il est d'accord avec ce qui est dans la base de données. Votre jeu de caractères php doit correspondre au jeu de caractères de votre base de données pour correspondre à votre jeu de caractères phpMyAdmin. Si l'un d'entre eux est faux, vous obtiendrez exactement ce problème. L'un d'eux ne correspond pas!

+0

phpMyAdmin a raison. – omg

+0

J'ai collé le code ici. – omg

+1

Votre code collé ne nous montre pas les paramètres de connexion que vous utilisez. Assurez-vous que php se connecte à votre base de données en utilisant UTF-8. –

1

Regardez les paramètres de connexion dans la configuration php dans phpMyAdmin. Lorsque vous vous connectez à une base de données, vous pouvez spécifier un encodage de la connexion (ainsi que tous ces autres endroits). Cela pourrait être désynchronisé et vous causer des problèmes.

+0

Les paramètres de connexion dans php config dans phpMyAdmin devraient être OK, je peux mettre à jour les tables avec des données formatées utf-8. – omg

+0

Voir ma mise à jour, le code n'est plus que quelques dml. – omg

0

assurez-vous que le type de contenu HTTP est utf-8. c'est difficile à cerner.