Page 1 sur 2
[réglé] encodage UTF-8 et PHP
Publié : 31 janv. 2005, 17:08
par Thomas
J'ai un formulaire "envoyé" en UTF-8 grâce à ça :
Code : Tout sélectionner
<?php
header("Content-Type: application/xml; charset=utf-8");
echo "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
?>
Le code est ensuite mis dans une BDD MySQL grâce à PHP.
La page qui récupère el code est elle aussi envoyé en UTF-8 pourtant les caractères sont mal affichés
Apparement ils le sont déjà dans PHPMyAdmin. Cela peut vneir de la table MySQL ? De l'enregistrement par PHP ?
Merci de m'éclairer
Publié : 31 janv. 2005, 17:18
par jv2759
je pense que par defaut mysql ne stocke pas en utf-8, il faut lui dire explicitement si j'ai bien comprit :
http://dev.mysql.com/doc/mysql/fr/charset-unicode.html
Publié : 01 févr. 2005, 00:36
par martin
Je m'excuse, je n'ai pas bien compris.
Tu veux dire que ce header est envoyé en en tête de la page qui contient le formulaire ?
Que donne <?php print_r($_REQUEST) ; exit; ?> sur la page qui reçoit les données du formulaire, qui traite ?
As tu regardé du côté de ces fonctions :
http://fr.php.net/manual/fr/function.utf8-encode.php
http://fr.php.net/manual/fr/function.utf8-decode.php
Publié : 01 févr. 2005, 00:36
par Zexen
Vois aussi éventuellement du côté de la fonction
utf8_encode.
Edit : Grillé

. Si on est deux à y penser, c'est peut-être une solution

.
Re: encodage UTF-8 et PHP
Publié : 01 févr. 2005, 12:56
par djfeat
Toto a écrit :Code : Tout sélectionner
<?php
header("Content-Type: application/xml; charset=utf-8");
echo "<?xml version="1.0" encoding="UTF-8"?>";
?>
Pour du application/xml je crois qu'il faut plutôt envoyer:
En tout cas je bosse en full-utf8 la plupart du temps et j'ai jamais eu à encoder/désencoder pour enregistrer en base, et tout s'affiche bien dans phpmyadmin (faut pas oublier de spécifier l'encodage lors de la connexion).
Publié : 01 févr. 2005, 13:25
par Bobe
non non, c'est bien "charset" dans l'en-tête http.
Publié : 01 févr. 2005, 13:31
par djfeat
Ah ? Avec mon fil RSS ça n'allait pas avec charset et j'ai résolu le problème avec encoding... étrange...
Publié : 01 févr. 2005, 15:16
par Bobe
Comment ça, "ça n'allait pas avec charset" ?
Publié : 01 févr. 2005, 15:23
par calimo
Surement un mode Quirk qui pousse à faire des erreurs de conception

Publié : 01 févr. 2005, 15:41
par djfeat
Bobe a écrit :Comment ça, "ça n'allait pas avec charset" ?
Les lecteurs de news le comprenaient comme de l'ISO-8859-1 donc problème avec les caractères accentués. MAIS je viens de retenter avec "charset" et maintenant ça semble fonctionner comme il faut. Bon bon bon... peut-être qu'à l'époque mon lecteur de news de test (RSSOwl) était buggé à ce niveau.
Publié : 01 févr. 2005, 18:24
par SB
Est-ce obligatoire ? Est-ce qu'en application/xhtml+xml c'est obligatoire aussi ? Parce que je n'ai ni l'un ni l'autre.
Code : Tout sélectionner
<?php
header("Content-type: application/xhtml+xml");
echo "<?xml version='1.0' encoding='iso-8859-1' ?>\n";
?>
Publié : 01 févr. 2005, 18:28
par djfeat
Je crois que problème c'est qu'il y a un encodage par défaut envoyé par le serveur et qu'en général c'est ISO-8859-1 donc on est obligé de le spécifier explicitement dans le header lorsqu'on veut faire de l'UTF-8. Par exemple quand je développais sur mon serveur local j'en avais pas besoin puisque je l'avais règlé comme je voulais mais une fois transféré sur un serveur mutualisé ça coinçait. Que ce soit du text/html, du application/xhtml+xml ou du application/xml.
Publié : 01 févr. 2005, 18:32
par SB
Merci pour l'info. Je me posais justement la question de l'intérêt de passer en utf-8 et si je le fais ça me sera utile.
Publié : 03 févr. 2005, 11:37
par DJiK
jv2759 a écrit :je pense que par defaut mysql ne stocke pas en utf-8, il faut lui dire explicitement
JV a raison.
Je vois pas ce que vous voulez encoder avec utf8_encode.

Publié : 04 févr. 2005, 22:49
par Thomas
Euh le problème semble être réglé ou plutôt "déplacé"
Je relierai mes mails pour vous dire où cela en est sinon Calimo vous expliquera ce qu'il a découvert
