UTF-8, PHP et MySQL

Le
Christophe
Bonjour,

J'essaie d'entrer une requête INSERT avec de l'UTF-8 dans MySQL (4.1.16) à
partir d'un script PHP simple (comme test). Exemple:
$string = 'Mes accents ténébreux';
$req ="INSERT INTO documents (libelle, libelle2) VALUES ('$string', '."
$string ."')";

L'encodage du script est utf-8 no bom.

J'ai mis le header header('Content-Type: text/html; charset=utf-8'); au
début du script et ajouté mysql_query("SET NAMES 'utf-8'");

J'ai vérifié que la base et les interclassements sont en UTF-8.

1er constat: je ne vois pas les accents de la chaîne insérée dans la base
depuis phpmyadmin. Est-ce normal ?
2e constat: si j'utilise utf8_decode(), les accents apparaissent dans
phpmyadmin, mais cette fonction convertit une chaîne en latin-1, l'utf-8 ne
sert donc à rien.
3e constat: même avec les accents brouillés dans phpmyadmin, je peux
récupérer la chaîne avec les accents en ordre lorsqu'elle est intégrée
directement à la chaîne dans l'INSERT et pas lorsqu'elle est concaténée
(voir l'exemple ci-dessus avec libelle et libelle2).

Quelqu'un pourrait-il m'éclairer ? D'avance merci pour votre aide.
Christophe

  • Partager ce contenu :
Vos réponses
Trier par : date / pertinence
padock
Le #93372
Le problème se situe au niveau de phpmyadmin qui affiche pas ton utf8
correctement ,mais mysql lui marche très bien puisque tes données
s'affichent bien. En ligne de commande tout est ok... de même que via
ton interface php... mais si tu insères des données via phpmyadmin,
ces caractères s'afficheront mal dans ton interface web... qui elle
est correct!

J'ai le même problème et si tu cherche des discussions à ce sujet
autour de phpmyadmin il y en a plein.

Mes données (utf8) s'affichent mal dans phpmyadmin même si je choisi
bien cet encodage à la connexion.

Alors que mon apache2 délivre des pages utf8... le systeme tourne en
utf8... les headers php respécifie l'utf8 et les balises meta xhtml
aussi!... bein enregistrer les fichiers php en utf8 dans l'éditeur
etc...

Seul phpmyadmin les affiche mal , en fait tout tourne correctement.

gui



Bonjour,

J'essaie d'entrer une requête INSERT avec de l'UTF-8 dans MySQL (4.1.16) à
partir d'un script PHP simple (comme test). Exemple:
$string = 'Mes accents ténébreux';
$req ="INSERT INTO documents (libelle, libelle2) VALUES ('$string', '."
$string ."')";

L'encodage du script est utf-8 no bom.

J'ai mis le header header('Content-Type: text/html; charset=utf-8'); au
début du script et ajouté mysql_query("SET NAMES 'utf-8'");

J'ai vérifié que la base et les interclassements sont en UTF-8.

1er constat: je ne vois pas les accents de la chaîne insérée dans la base
depuis phpmyadmin. Est-ce normal ?
2e constat: si j'utilise utf8_decode(), les accents apparaissent dans
phpmyadmin, mais cette fonction convertit une chaîne en latin-1, l'utf-8 ne
sert donc à rien.
3e constat: même avec les accents brouillés dans phpmyadmin, je peux
récupérer la chaîne avec les accents en ordre lorsqu'elle est intégrée
directement à la chaîne dans l'INSERT et pas lorsqu'elle est concaténée
(voir l'exemple ci-dessus avec libelle et libelle2).

Quelqu'un pourrait-il m'éclairer ? D'avance merci pour votre aide.
Christophe


Christophe
Le #93371
Le 10.11.2006 10:54, dans
, « padock »

Seul phpmyadmin les affiche mal , en fait tout tourne correctement.


Merci pour ta réponse. J'ai perdu de nombreuses heures inutilement à cause
de ça et comme j'utilise en parallèle CocoaMySQL et qu'il y avait le même
problème, je n'ai pas pensé une seconde que cela pouvait venir du logiciel
client de la base de données. Damned.
Christophe

JA
Le #93150
Bonsoir,

J'avais eu le même problème, et comme je trouve qur phpmyadmin est pas mal,
je suis resté en mysql 4.0.

Une question : est ce que les dernieres versions de phpmyadmin resolvent ce
pb d'UTF-8 ??

Par avance, merci


Francois
Poster une réponse
Anonyme