Still caracteres accentués sous Php/MySql
RasDataMan
-
thall0s -
thall0s -
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
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:
- Still caracteres accentués sous Php/MySql
- Caractères ascii - Guide
- Caractères spéciaux - Guide
- Easy php - Télécharger - Divers Web & Internet
- Caractères spéciaux mac - Guide
- Caracteres speciaux - Guide
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 ;-)
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 ;-)