Malheureusement, phpMyAdmin est l'une des premières applications php qui parle à MySQL du jeu de caractères correctement. Votre problème est très probablement dû au fait que la base de données ne stocke pas les chaînes UTF-8 correctes en premier lieu.
Afin d'afficher correctement les caractères dans phpMyAdmin, les données doivent être correctement stockées dans la base de données. Cependant, la conversion de la base de données dans le jeu de caractères correct casse souvent les applications web qui ne connaissent pas la fonctionnalité liée au jeu de caractères fournie par MySQL.
Puis-je demander : MySQL est-il > version 4.1 ? Pour quelle application web la base de données est-elle destinée ? phpBB ? La base de données a-t-elle été migrée depuis une ancienne version de l'application Web ou une ancienne version de MySQL ?
Je vous conseille de ne pas vous en mêler si l'application Web que vous utilisez est trop ancienne et n'est pas prise en charge. Ne convertissez les bases de données en UTF-8 réel que si vous êtes sûr que l'application web peut les lire correctement.
Editar:
Votre MySQL est > 4.1, ce qui signifie qu'il est compatible avec les jeux de caractères. Quels sont les paramètres de collation du jeu de caractères de votre base de données ? Je suis presque sûr que vous utilisez latin1
qui est le nom MySQL pour ASCII, pour stocker le texte UTF-8 en 'bytes', dans la base de données.
Pour les clients insensibles au jeu de caractères (i.e. mysql-cli et php-mod-mysql), les caractères sont affichés correctement puisqu'ils sont transférés de/vers la base de données sous forme d'octets. Dans phpMyAdmin, les octets sont lus et affichés en tant que caractères ASCII, ce qui explique le texte erroné que vous voyez.
D'innombrables heures ont été passées il y a des années (2005 ?) lorsque MySQL 4.0 est devenu obsolète, dans de nombreuses régions d'Asie. Il existe une manière standard de traiter votre problème et les données englouties :
- Sauvegardez votre base de données comme
.sql
- Ouvrez-le dans un éditeur de texte compatible UTF-8, vérifiez qu'ils sont corrects.
- Cherchez
charset collation latin1_general_ci
, remplacer latin1
a utf8
.
- Enregistrez comme un nouveau fichier sql, n'écrasez pas votre sauvegarde.
- Importez le nouveau fichier, ils apparaîtront maintenant correctement dans phpMyAdmin, et les japonais sur votre application web deviendront des points d'interrogation. C'est normal.
- Pour vos applications web en php qui dépendent de php-mod-mysql, insérez
mysql_query("SET NAMES UTF8");
après mysql_connect()
maintenant les points d'interrogation disparaîtront.
-
Ajoutez la configuration suivante my.ini
pour mysql-cli :
# CLIENT SECTION
[mysql]
default-character-set=utf8
# SERVER SECTION
[mysqld]
default-character-set=utf8
Pour plus d'informations sur le charset sur MySQL, veuillez vous référer au manuel : http://dev.mysql.com/doc/refman/5.0/en/charset-server.html
Notez que je suppose que votre application web utilise php-mod-mysql pour se connecter à la base de données (d'où l'utilisation de l'option de connexion par défaut). mysql_connect()
), puisque php-mod-mysql est la seule extension à laquelle je pense qui déclenche encore le problème À CE JOUR.
phpMyAdmin utilise php-mod-mysqli pour se connecter à MySQL. Je n'ai jamais appris à l'utiliser car je suis passé aux frameworks* pour développer mes projets php. Je vous encourage vivement à faire de même.
- De nombreux frameworks, par exemple CodeIgniter, Zend, utilisent mysqli ou pdo pour se connecter aux bases de données. Les fonctions mod-mysql sont considérées comme obsolètes pour des raisons de performances et d'évolutivité. De plus, vous ne souhaitez pas lier votre projet à un type de base de données spécifique.
0 votes
Il s'agit probablement d'un problème dans les paramètres de connexion de PhpMYAdmin. Il doit également être explicitement réglé sur UTF-8. Je n'ai pas de copie à portée de main, mais elle se trouve généralement quelque part près de la page d'accueil.
0 votes
Je ne vois ces paramètres nulle part dans phpMyAdmin et les recherches sur Google n'ont rien donné jusqu'à présent.
0 votes
Quelle version de phpMyAdmin utilisez-vous ? La page d'accueil de phpMyAdmin affiche la collation de la connexion MySQL ainsi que le jeu de caractères MySQL - sont-ils tous deux UTF-8 ?
0 votes
PhpMyAdmin version 3.3.2deb1 - MySQL charset : UTF-8 Unicode (utf8) - La collation de la connexion MySQL est par défaut utf8_general_ci.
0 votes
J'espère que cet article vous sera d'une grande aide : toptal.com/php/a-utf-8-primer-pour-php-et-mysql