Rechercher : dans
Par :

Still caracteres accentués sous Php/MySql

Dernière réponse le 29 nov 2005 à 16:46:37 RasDataMan, le 26 sep 2005 à 17:56:04 
 Signaler ce message aux modérateurs

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

1

crabs, le 26 sep 2005 à 18:03:01
  • +1

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. ..., I think Slackware sounds better than 'Microsoft,'
-- Patrick Volkerding - founder and maintainer of Slackware

Répondre à crabs

2

 thall0s, le 29 nov 2005 à 16:46:37

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 ;-)

Répondre à thall0s
Collection CommentÇaMarche.net