Mysqldump en utf8 me donne des ?

WRInaute discret
bonjour,

lorsque je fais un mysqldump de ma bdd a partir d'une tache cron, le fichier .sql generé contient des ??? à la place des caracteres spéciaux (chinois, coreen et japonais). Pourtant si je fais un export à partir de phpmyadmin, cela fonctionne tres bien.

qqn aurait une idée sur ce probleme?

ma bdd est en latin_general_ci et les tables sont parfois en latin_general_ci et utf8 (c'est pas tres propre je sais).
Avant les colonnes etait en latin_ganeral_ci et contenaient des caracteres etranges (è¨sa.a$) a cause du fait que je stockais des caracteres chinois dans une colonne en latin, du coup j'ai converti tous ces colonnes en utf8 et maintenant j'arrive à les voir correctement dans la base.
Comme vous l'avez deviné cela a généré des pb lors des export avec mysqldump.

lorsque je fais un "show variable like character_set%" , toutes les variables sont en utf8, sauf le
character_set_server=latin1

une idée???
 
WRInaute discret
Babylon a dit:
bangdai a dit:
ma bdd est en latin_general_ci et les tables sont parfois en latin_general_ci et utf8 (c'est pas tres propre je sais).

tu as essayé de passer ta bdd en Utf8 ?

oui j'ai deja essayé et ça na rien changé, du coup, jai repassé en latin.
sur la bdd il y a 3 niveau dencodage ou collation.

bdd : latin ou utf8 (jai essayé les 2)
table: latin et utf8 (jai migré certaines tables en utf8 et jai laissé les autres qui n'avaient pas besoin de changer)
colonne: seul les colonnes qui contiennent des caracteres etrangés sont en utf8, le reste tjs en latin.

j'ai regardé sur le web, essayé de forcer le caractere avec
mysqldump --set-default-chaharcter=utf8 ...
Rien a faire ...
 
WRInaute discret
Babylon a dit:
Perso vu l'utilisation je laisserais toute la base en Utf8 .
Sinon tu le fais comment ton mysqldump ?

oaui je peux tres bien le passer en utf8, mais je ne pense pas que ça regle mon pb.

la ligne ressemble a ça, avec ou sans --default-character-set=utf8
mysqldump -u COMPTE -pMDP --opt BDD -h SERVEUR > backup.sql
 
WRInaute discret
j'ai trouvé une solution qui marche mais dans mon cas, il me convient pas.
l'idée serait de convertir tous les "latin1" par "utf8" dans le fichier de conf qui se trouve dans
/etc/mysql/my.cnf

et lors de mon export, il me genere bien la base. Seul petit souci, cela change l'encodage pour mes autres sites hebergés sur ce meme serveur (dédié). Et donc les sites en iso-8859-1 ne passe plus.

Qqn saurait comment changer ces valeurs temporairement lors de l'execution de mon script shell?
Et ne pas changer le fichier de conf
 
Discussions similaires
Haut