{MySQL} exporter en utf-8 avec SELECT OUTFILE

Résolu
eponyo Messages postés 1 Date d'inscription   Statut Membre Dernière intervention   -  
 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.
A voir également:

2 réponses

imw Messages postés 233 Date d'inscription   Statut Membre Dernière intervention   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.
0
eponyo
 
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 :)
0