{MySQL} exporter en utf-8 avec SELECT OUTFILE [Résolu/Fermé]

Signaler
Messages postés
1
Date d'inscription
vendredi 31 juillet 2009
Statut
Membre
Dernière intervention
31 juillet 2009
-
 eponyo -
Bonjour,

J'ai une table dont le charset est en utf-8 :

create table index(
id SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT,
nom VARCHAR(255) NOT NULL,
)DEFAULT CHARACTER SET=utf8;


Lorsque que je veux l'exporter depuis PHP, j'utilise le code suivant :

mysql_query("set names 'utf8'");
$var = mysql_query('show variables');
while ($res = mysql_fetch_row ($var)){
echo ("<p>$res[0] : $res[1]</p>");
}

// ceci affiche (entre autres) :
// character_set_client : utf8
// character_set_connection : utf8
// character_set_database : latin1
// character_set_filesystem : binary
// character_set_results : utf8
// character_set_server : latin1
// character_set_system : utf8
// character_sets_dir : /usr/share/mysql/charsets/
// collation_connection : utf8_general_ci
// collation_database : latin1_swedish_ci
// collation_server : latin1_swedish_ci

mysql_query('SELECT * FROM index INTO OUTFILE '/tmp/index.txt');

Mon problème est que les accents s'affichent mal dans le fichier index.txt, par exemple :
22 édition

Pourtant, le fichier 'index.txt' est bien en utf-8 (d'après la commande 'file');
Lorsque je consulte la base de données depuis le terminal (affichage en utf-8) tout s'affiche bien..

J'ai consulté la doc de SELECT ... OUTFILE mais je n'arrive pas à voir d'où vient le problème. Est-que quelqu'un aurait une idée ?

Merci.

2 réponses

Messages postés
233
Date d'inscription
vendredi 17 juillet 2009
Statut
Membre
Dernière intervention
8 septembre 2011
42
A priori, la base est en latin1 ... essaye de la passer en utf8 ...

pour ce qui est de la commande file, je ne sais pas trop comment elle détermine l'encodage du fichier.

Je ne sais pas quelle utilisation du espère faire du outfile mysql, mais perso, je n'ai jamais réussi à faire ce que je voulais, je me suis fait mes propres scripts d'export.
Bonjour et merci pour la réponse.

En fait, dans les requêtes précédentes, lorsque je remplissais la base de données ou lorsque j'allais y chercher des infos, je n'utilisais pas la commande SET NAMES .... :-/
Problème résolu :)