Still caracteres accentués sous Php/MySql

Fermé
RasDataMan - 26 sept. 2005 à 17:56
 thall0s - 29 nov. 2005 à 16:46
Bjour,

après maintes recherches sur google, je n'ai pas trouvé de solution à mon problème.

Problème :

J'insère des enregistrements dans ma table mysql en utilisant sous php la fonction fgetcsv:

while (($data = fgetcsv($handle, 1024, ";")) !== FALSE)

echo ''.data[4].''; me donne des valeurs dans mon navigateur sans aucun problème d'accent. ex : 'Algérie'
Par contre dès l'insertion de cette variable dans une requete sql :

'SELECT [...] WHERE Pays ='.($data[4]).'';

mysql ne trouve pas l'enregistrement parce que le 'é' a été transformé en '©'.

J'ai joué avec les interclassements de ma base de données mais en vain.(utf8 et latin1 entre autres)

J'ai aussi appliqué la fonction utf8_encode sur ma variable, ca ne change rien.

Entête de ma page :

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>

Est-ce que qqn pourrait m'aider, ca fait un moment que je galere avec ce problème et ça m'empêche d'avancer.

Aussi, en tapant ma requete sous PhpMyAdmin avec les accents, j'ai pas de soucis, j'obtiens mon résultat sans problème.

Est ce que qqn pourrait m'aider car ça fait un bail que je bataille avec ce problème mais en vain et ça m'empêche d'avancer. Merci.

Salutations,


RasDataMan
A voir également:

2 réponses

Hey,

J'ai été confronté au même problème...
En fait, une fois récupéré les données grâce à fgetcsv, tu as plusieurs choix:
- ta BD mysql est en interclassement UTF8, alors tu utilises utf8_encode pour les 'insert"
- ta BD mysql est en interclassement latin1 (ou un interclassement qui gère les accents en natif), tu peux faire les 'insert' directement.

Pour ce qui est de l'affichage, il faut que tu spécifie le charset pour ne pas avoir de problèmes (charset=iso-8859-1 et tu ne gère pas les accents en sortie de BD, sinon si y'a eu un encode UTF8 dans la BD, tu dois juste faire le décodage... le charset gère le reste... )

J'espère avoir été suffisamment clair ;-)
1
crabs Messages postés 908 Date d'inscription lundi 18 avril 2005 Statut Membre Dernière intervention 3 août 2008 507
26 sept. 2005 à 18:03
Salut,
Ton csv semble être en utf8, lors du chargement il faut le passer
en iso-8859-1, à l'aide de utf8_decode() avant les 'insert' dans la base.
Ou alors essaies de passer le charset de tes pages html en utf8 en lieu et
place de iso-8859-1.
0