OVH Cloud OVH Cloud

Php et utf-8

6 réponses
Avatar
Christophe
Bonjour,

Je coince sur le problème suivant:

J'ai choisi de réaliser un site dynamique en php avec l'encodage utf-8.
C'est la première fois que j'utilise ce charset. Les données sont stockées
chez mon hébergeur sur une base MySQL 4.1.12 en utf-8. Les accents sont
corrects avec phpMyAdmin. Mes pages HTML renvoient un header utf-8. Malgré
tout, les accents ne passent pas. En fait, ils sont Ok uniquement en
utilisant la fonction utf8_encode qui traduit du ISO-8859-1 en utf-8, ce qui
semble à première vue illogique vu que la base est déjà en utf-8. A noter
que lorsque mes pages sont générées en local sur mon Mac, tout est Ok, c'est
sur le serveur Linux de mon hébergeur que cela pose problème. Bref, si
quelqu'un peut me mettre sur une piste, ce serait sympa.

Christophe

6 réponses

Avatar
Bobe
Christophe nous a dit le 12.11.2005 17:16:

corrects avec phpMyAdmin. Mes pages HTML renvoient un header utf-8. Malgré
tout, les accents ne passent pas. En fait, ils sont Ok uniquement en
utilisant la fonction utf8_encode qui traduit du ISO-8859-1 en utf-8, ce qui
semble à première vue illogique vu que la base est déjà en utf-8. A noter
que lorsque mes pages sont générées en local sur mon Mac, tout est Ok, c'est
sur le serveur Linux de mon hébergeur que cela pose problème.



Que la db stocke en utf-8 ne signifie pas qu'elle va te renvoyer des
chaînes utf-8 ou considérer ce que tu lui donnes comme de l'utf-8.

Essaie un mysqli_query("SET NAMES 'utf8'"); juste après l'ouverture de
la connexion.

--
Aurélien Maille

Avatar
Christophe
Le 12.11.2005 23:37, dans 43763763$0$21278$,
« Bobe » a écrit :

Essaie un mysqli_query("SET NAMES 'utf8'"); juste après l'ouverture de
la connexion.


Merci pour ta réponse, mais il semblerait que cette fonction fait partie de
php 5 et je suis toujours en php 4.

Christophe

Avatar
Xavier Garreau
Essaie un mysqli_query("SET NAMES 'utf8'"); juste après l'ouverture de
la connexion.



Merci pour ta réponse, mais il semblerait que cette fonction fait partie de
php 5 et je suis toujours en php 4.


Peut être
mysql_query("SET NAMES 'utf8'");

a+
--
Xavier Garreau
http://www.xgarreau.org/


Avatar
Olivier M.
ecrivait/schrieb/wrote:
Le 12.11.2005 23:37, dans 43763763$0$21278$,
« Bobe » a écrit :

Essaie un mysqli_query("SET NAMES 'utf8'"); juste après l'ouverture de
la connexion.


Merci pour ta réponse, mais il semblerait que cette fonction fait partie de
php 5 et je suis toujours en php 4.


essaye plutot ca alors: (au début du script)

Header('Content-Type: text/html; charset=utf-8');

Olivier
--
_________________________________________________________________
Olivier M. - - PGP: 0E84D2EA - Switzerland


Avatar
loufoque

Essaie un mysqli_query("SET NAMES 'utf8'"); juste après l'ouverture de
la connexion.
Merci pour ta réponse, mais il semblerait que cette fonction fait partie de

php 5 et je suis toujours en php 4.


essaye plutot ca alors: (au début du script)

Header('Content-Type: text/html; charset=utf-8');



Rien à voir.
C'est totalement différent.

Bien évidemment, il faut executer la requête SET NAMES 'utf8'. Que tu le
fasses avec les modules mysql, mysqli ou PDO ça ne change pas grand chose...
Enfin normalement on n'utilise pas trop MySQL 4.1 avec le module mysql.



Avatar
Christophe
Le 15.11.2005 7:27, dans 4379180a$0$21699$,
« loufoque » a écrit :


Rien à voir.
C'est totalement différent.

Bien évidemment, il faut executer la requête SET NAMES 'utf8'. Que tu le
fasses avec les modules mysql, mysqli ou PDO ça ne change pas grand chose...
Enfin normalement on n'utilise pas trop MySQL 4.1 avec le module mysql.


Merci pour vos réponses, j'ai trouvé un article qui aborde ces problèmes en
long et en large:
<http://www.informit.com/articles/article.asp?p28641&seqNum=1>

Christophe