Unicode (2) mysql

Le
Newsgroups
Bonjour,

J'ai quasiment le même souci que le message précédent ; sauf que pour
moi, le problème est plutôt au niveau de l'écriture dans mysql (inser=
t).

Voici mes éléments :
- je ne controle pas les données source, je ne connais donc pas
forcément l'encodage des textes. J'utilise quand même HTML::Encoding
pour le détecter
Donc, je souhaite avoir une bdd uniforme et de préférence en utf-8 (je
ne veux pas me retrouver avec tantot du iso et tantot du utf-8)

- je peux choisir l'encodage de ma bdd mysql ; j'ai essayé
utf8_unicode_ci, utf8_general_ci, utf8_bin

- j'utilise la librairie DBI pour me connecter à mysql

- la lecture de la bdd se fait par des scripts PHP et le header renvoi
les données en utf-8 et l'encodage html est lui aussi utf-8

Donc, qu'est ce que vous me conseillez pour mon cas ?
Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Nicolas George
Le #154325
Newsgroups wrote in message
Donc, qu'est ce que vous me conseillez pour mon cas ?


Je ne connais absolument rien à mysql, donc je ne peux pas te conseiller à
ce niveau. En revanche, une chose qu'il est important de surveiller au
niveau de Perl, c'est que tous les scalaires contenant du texte Unicode
renvoient bien vrai au test utf8::is_utf8. Si ce n'est pas le cas, c'est que
Perl n'est pas informé de la nature des variables qu'il manipule, et ça va
échouer quelque part.

Newsgroups
Le #154324
une chose qu'il est important de surveiller au
niveau de Perl, c'est que tous les scalaires contenant du texte Unicode
renvoient bien vrai au test utf8::is_utf8.


mon test me renvoi 1.
En fait, j'ai fais le test suivant qui donne les résultats suivants :
- dans la console, c'est ok,, il s'affiche :
"INSERT INTO test (mot) VALUES ('éàçèîïùüû~#èì') --> 1"

- par contre, phpMyAdmin m'affiche "éà çèîïà ¹Ã¼Ã»~#èì"

Voici le script perl complet de mon test :

#!/usr/bin/perl
use lib::Common;
binmode STDOUT, ":utf8";
use utf8;
use DBI;

my $dsn = "DBI:mysql:database=".$database.";host=".$hostname;
my $dbh = DBI->connect($dsn, $login, $password) or die "echec cnx";

$dbh->{"mysql_enable_utf8"} = 1;

my $q = "INSERT INTO test (mot) VALUES ('éàçèîïùüû~#è ì')";
print $q." --> ".utf8::is_utf8($q)."n";

my $sth = $dbh->prepare($q);
$sth->execute();

Publicité
Poster une réponse
Anonyme