OVH Cloud OVH Cloud

htmlentities & charset ?

3 réponses
Avatar
Gilles FEVRIER
Salut,

J'ai un p'tit problème de conversion de caractères...

Si je fais :

<?php

echo htmlentities("é");

?>

J'obtient à l'écran :

é

Ce qui donne dans le source HTML :

&Atilde;&copy;

J'aurais quand même préféré obtenir un "&eacute;" tout simple moi...

Je tourne un peu en rond alors que je pense que le problème est tout
simple...

Z'auriez pas une piste par hasard ? :-)

A+

Gilles

3 réponses

Avatar
Olivier Miakinen

J'ai un p'tit problème de conversion de caractères...

Si je fais :
echo htmlentities("é");
J'obtient à l'écran :
é
Ce qui donne dans le source HTML :
&Atilde;&copy;


C'est que ton fichier PHP est en UTF-8, alors que htmlentities ne marche
que pour de l'ISO-8859-1.

Dans le cas particulier du « é », cela marchera en faisant :
echo htmlentities(utf8_decode("é"));
mais bon sang, pourquoi vouloir transformer en « &eacute; » un « é »
parfaitement formé qui ne demande rien à personne ? Déclare que le
charset est UTF-8, et tous les navigateurs seront contents, de même
que toi lorsque tu voudras relire le code généré pour détecter un bug
éventuel !

Note en plus que si tu utilises un « ½ » ou un « ¤ » ils fonctionneront
parfaitement en UTF-8 mais ils seront perdus irrémédiablement si tu
essayes de les faire passer par la moulinette utf8_decode + htmlentities.

J'aurais quand même préféré obtenir un "&eacute;" tout simple moi...


C'est simple, « &eacute; » par rapport à « é » ?

Avatar
Florian Sinatra
Bonjour,
ton script doit être encodé en UTF-8 alors que ton serveur envoie de
l'ISO-8859-1 (Latin-1). Fais passer ton script en Latin-1, ou utilise
utf8_decode("é").
Avatar
Aramiil
Gilles FEVRIER wrote:
Salut,

J'ai un p'tit problème de conversion de caractères...

[...]

Gilles


<?php echo htmlentities("é", ENT_NOQUOTES, 'UTF-8'); ?>

ça ne marche pas comme ça ?

Bonne journée,

Aramiil