[réglé] encodage UTF-8 et PHP

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Thomas
Varan
Messages : 1907
Inscription : 07 janv. 2004, 17:29

[réglé] encodage UTF-8 et PHP

Message 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
Dernière modification par Thomas le 05 févr. 2005, 18:04, modifié 1 fois.
Anciennement Toto.
jv2759
Tyrannosaurus Rex
Messages : 4161
Inscription : 12 févr. 2004, 14:29

Message 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
Inscrit sur la liste des abonner absent...
martin
Varan
Messages : 1074
Inscription : 21 janv. 2004, 16:23

Message 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
Zexen
Arias
Messages : 10
Inscription : 14 févr. 2004, 12:13

Message 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 :D.
djfeat
Gecko
Messages : 65
Inscription : 29 mars 2004, 14:14

Re: encodage UTF-8 et PHP

Message 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:

Code : Tout sélectionner

header("Content-Type: application/xml; encoding=utf-8");
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).
Bobe
Iguane
Messages : 742
Inscription : 28 juil. 2003, 21:29

Message par Bobe »

non non, c'est bien "charset" dans l'en-tête http.
« La vie d’un geek est un combat perpétuel contre l’imperfection »
djfeat
Gecko
Messages : 65
Inscription : 29 mars 2004, 14:14

Message par djfeat »

Ah ? Avec mon fil RSS ça n'allait pas avec charset et j'ai résolu le problème avec encoding... étrange...
Bobe
Iguane
Messages : 742
Inscription : 28 juil. 2003, 21:29

Message par Bobe »

Comment ça, "ça n'allait pas avec charset" ?
« La vie d’un geek est un combat perpétuel contre l’imperfection »
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Surement un mode Quirk qui pousse à faire des erreurs de conception :|
djfeat
Gecko
Messages : 65
Inscription : 29 mars 2004, 14:14

Message 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.
SB
Varan
Messages : 1095
Inscription : 05 mars 2004, 18:38

Message 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";
?>
djfeat
Gecko
Messages : 65
Inscription : 29 mars 2004, 14:14

Message 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.
SB
Varan
Messages : 1095
Inscription : 05 mars 2004, 18:38

Message 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.
DJiK
Lézard à collerette
Messages : 474
Inscription : 17 févr. 2004, 13:18

Message 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. :wink:
Je vois pas ce que vous voulez encoder avec utf8_encode. :?:
Thomas
Varan
Messages : 1907
Inscription : 07 janv. 2004, 17:29

Message 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 :)
Anciennement Toto.
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 11 invités