Bonjour à tous!
Je rencontre des problèmes avec les caractères spéciaux (accents, apostrophe etc) lors de l'insertion en base et donc de l'affichage. En effet ça me retourne des �. J'en déduis donc que c'est un problème d'encodage avec mes données.
Pour résumer ma situation : je remplis une base de données Mysql avec un fichier csv par un script perl. Ensuite j'interroge la base avec des scripts PHP.
Après avoir lu plusieurs forums, j'ai vu qu'étant donné mes données, je devais utiliser l'encadage en UTF8. Voici les opérations que j'ai réalisées :
- Au niveau du fichier csv
Sous Excel, lorsque j'ai fait 'Enregistrer sous', je suis allée dans les options internet et j'ai forcé l'encodage en UTF-8.
Pour être sûre que le fichier était bien en utf8, j'ai aussi fait cette commande Unix :
iconv -f ISO8859-1 -t UTF-8 10-05-19-data.csv > 10-05-19-data_utf8.csv- Au niveau de la base Mysql
Lorsque je créé ma base de données, j'utilise ce code :
CREATE DATABASE `CI_DATABASE` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;- Au niveau du script perl
Pour insérer mes données en base, je leur applique la méthode quotemeta puis effectue ce genre de requete :my $dbh = DBI->connect($dsn, '$user', '$pwd');
$dbh->{'mysql_enable_utf8'}=1;
$dbh->do('SET NAMES UTF8');
$insertQuery = $dbh->do("INSERT INTO CI_DATABASE.Company(name,last_update,last_user,status,frequency,products) VALUES(\"$company\",\"$date\",\"$user\",\"$status\",\"$frequency\",\"$products\")");- Au niveau des scripts PHP
Et juste après la connexion à ma base de données :header('Content-type:text/html;charset=utf-8');
mysql_query("SET NAMES 'utf8'");
Résultats de tout ça :
- Dans mon fichier de données, les accents sont pris en compte mais pas les apostrophes (touche 4).
- Dans la base Mysql, les accents et les caractères spéciaux ne sont pas pris en compte et s'affichent comme tel : �.
- Par conséquent, dans mon interphace en PHP, les accents et caractères spéciaux ne sont pas bien affichés et encore mieux ils sont carrément effacés!
Je pense que le problème se trouve dans mon script perl permettant l'insertion en base mais je ne vois pas comment faire Si quelqu'un pouvait solutionner mon problème, j'en serai fort contente!
Merci d'avance!
Partager