Pb d'accent

cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011 - 25 juin 2008 à 20:39
Farfadh Messages postés 68 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 7 juillet 2008 - 2 juil. 2008 à 06:18
Bonjour,
Comment éviter que les lettres accentuées soit converti en, je ne c'est quoi exemple : Téléchargé --> Télécharger.
Pour info, et je ne sais pas si ca vient de là, mon header est :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />

merci de votre aide

13 réponses

nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
25 juin 2008 à 20:50
Salut,

remplace :

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-15" />

par :

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011
25 juin 2008 à 20:57
Hello,
je ne souhaite pas avoir une page en utf8 car rien n'est fait pour le gérer correctement.
je préférerais avoir les lettres sous cette form ( é è à ). Dans mon ca je doit les écrirent sous la forme : é => &eacute;
0
Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
25 juin 2008 à 21:20
Si ta source est en utf-8, tu dois mettre un charset utf-8.
0
cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011
25 juin 2008 à 21:25
oui je sais mais je n'ais pas de source en utf8 c'est juste du txt dans une page.
c'est pour ca que je galaire.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011
25 juin 2008 à 21:34
c'est bien ce que je pensais cela vient du header
il faut remplacer

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

par
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

et la ca tourne rond.
0
Bling 182 Messages postés 510 Date d'inscription lundi 27 novembre 2006 Statut Membre Dernière intervention 5 juillet 2009 3
25 juin 2008 à 21:44
Ton changement n'a absolument aucune incidence sur les accents
0
cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011
25 juin 2008 à 21:59
t'as raison.
mais c'est plus subtile que ca.
j'ai passé mon charset en UTF-8 et cela n'a rien changé fondamentalement sauf un fichier que j'appel avec un include qui lui m'affiche tj les accents sous forme de carré sauf si je rajoute <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> dans le fichier.
le pb et que je ne peux pas rajouter un charset dans chaque fichier que j'inclus, c'est pas fait pour ca.
0
cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011
25 juin 2008 à 22:06
bizard bizard, c'est ok maintenant alors que je n'ais rien fait.
surement un pb de cache navigateur.
a suivre ....
merci pour vos conseils
0
nicomilville Messages postés 3472 Date d'inscription lundi 16 juillet 2007 Statut Membre Dernière intervention 28 février 2014 36
26 juin 2008 à 08:15
De rien...

Normalement l'UTF-8 marche correctement mais j'ai eu un problème du même genre avec une source et j'ai fini par mettre le charset en ANSI lol !

a++

Si la réponse vous convient, pensez : Réponse acceptée !
0
Farfadh Messages postés 68 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 7 juillet 2008 4
29 juin 2008 à 10:58
J'ai eu un problème du même genre. Tous mes sites comportent les en-têtes suivants :

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>

Et tous marchent correctement, sauf un site. Je l'ai retourné pendant trois jours en essayant tous les modes possibles, en tentant même d'ajouter :

<?php header('Content-Type: text/html; charset=iso-8859-1'); ?>
<?xml version="1.0" encoding="iso-8859-1" ?>

Puis j'ai tenté avec l'utf-8, puis j'ai essayé toutes les combinaisons possibles avec des jeux de caractères mixtes. Sans résultat, quand bien même tous les autres sites fonctionnent normallement. Impossible d'ientifier l'origine du problème, cela fait ça en local sur toutes les machines et en ligne sur le serveur, donc ce n'est pas un problème de cache. On s'y est mis à plusieurs, mais rien à faire, impossible de trouver un semblant d'explication.

Du coup, j'ai dû laisser tomber et me résoudre à utiliser systématiquement les caractères spéciaux de HTML sous la forme &code; et donc d'utiliser la fonction htmlentities pour effectuer des sorties depuis PHP.

Et un jour, j'ai remarqué quelque chose qui m'a indiqué que c'était le PHP qui en est la cause. En effet, si je met le 'charset' du <meta ...> en iso, le code HTML brut ne fonctionne pas alors que les sorties du PHP marchent bien. et quand je le met en utf, c'est le contraire qui se produit. Soit c'est un problème de configuration du PHP, soit ce dernier bugue depuis sa version 5.

Je vais tâcher d'en savoir davantage et je vais reprendre les tests.
0
cs_christobal Messages postés 208 Date d'inscription jeudi 3 octobre 2002 Statut Membre Dernière intervention 31 mars 2011
29 juin 2008 à 11:21
Hello Farfadh,

merci pour ce retour très instructif.
A mont tour de te faire part de mes observations.
Historique : tout fonctionnais très bien et quelque soit l'encodage des caractères avec un charset=iso-8859-15 sur tt mes pages.
Puis j'ai décidé de rendre mon appli multi-langue et pour ca j'utilise un fichier fr.php avec des define.

Mon pb a commencé quand les txt contenu dans fr.php (inclus dans le fichier index.php) était affiché en UTF-8 donc si je mettais utf-8 dans le charset c'est les autres caractères (non contenu dans le fichier fr.php) qui partait en caouette.

Au contraire, le fichier fr.php d'un de mes modules qui se trouvait dans le 2éme sous répertoire ne posait aucun pb alors qu'il n'y avait aucune différence entre ces deux fichiers.
Donc bêtement j'ai créé un dossier langue_index que j'ai mis dans le 2éme sous répertoire et là tout fonctionne parfaitement.

Donc si je résume : fr.php associé a index.php => s'ils sont tous 2 dans le même dossier ca fonctionne mal. Alors que si je déplace fr.php dans => modules -> langue_index, cela fonctionne parfaitement.

Que de mystère.
0
Farfadh Messages postés 68 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 7 juillet 2008 4
2 juil. 2008 à 04:32
Oui, j'ai moi aussi pensé au problème d'inclusion. Mes codes HTML et mes sorties PHP ne sont pas au même niveau d'inclusion dans mon site. Je vais orienter mes tests dans ce sens, il est possible que PHP se trompe de charset à un moment donné, parce que je pense que des caractères erronés sont envoyés au navigateur qui n'y est pour rien.
0
Farfadh Messages postés 68 Date d'inscription dimanche 1 avril 2007 Statut Membre Dernière intervention 7 juillet 2008 4
2 juil. 2008 à 06:18
Ok, je viens de faire un test très intéressant.

En charset utf :

J'ai ajouté à un fichier 'code/main.php' le code :
<?php echo '<!--é'; echo ord('é'); ?>--><!--<?php ob_start(); ?>é<?php echo ord(ob_get_contents()); ?>-->

Et j'obtiens le résultat :
<!--é195--><!--é195-->

J'ai ajouté la même ligne de code dans le fichier 'code/smenu.php' qui est directement inclus dans le fichier précédent, et j'obtiens :
<!--?233--><!--?233-->

En charset ISO :

J'obtiens les résultats :
<!--é195--><!--é195-->
<!--é233--><!--é233-->

Le navigateur reçoit donc des données incorrectes. On dirait que PHP lit mal le deuxième fichier, ou que celui-ci est encodé en ISO.

Et ding ! Je viens de prendre un niveau en comprenant enfin ce mystérieux problème et en le résolvant de la manière suivante :
- je supprime le fichier 'code/smenu.php' après avoir copié son contenu
- je fais une copie du fichier 'code/main.php'
- je renomme la copie en 'code/smenu.php' en collant ce que j'avais dans mon presse-papier (le code du fichier que j'ai supprimé)

Et hop, ça marche comme un charme !

Le fichier 'code/smenu.php' en ISO, pour une raison que j'ignore encore. Avec ma manipulation, je l'ai en fait converti manuellement en UTF. Tous les fichiers du site n'ont pas été créé sur mon ordinateur de bureau mais depuis un ordinateur portable. Peut-être que la conversion s'est effectuée durant la copie via le réseau, je ne sais pas pour l'instant. Je continue à chercher...

Maintenant, il me faut un outil de conversion des jeux de caractères de mes fichiers. Ah, mon éditeur de texte sait le faire. Je force l'encodage des mes fichiers en UTF-8 et les problèmes d'accents disparaissent les uns après les autres. Et il semblerait que mon Windows crée des fichiers qui soient encodés en ANSI par défaut, ça ne m'étonne pas des masses, mais ce jeu de caractères est-il un dérivé de l'ISO ?

Une petite recherche et je trouve la réponse. Je savais déjà que DOS fonctionnait en ASCII et que ça posait des problèmes avec Windows qui lui était en ANSI. Ce dernier jeu de caractère se trouve être un ancêtre de l'ISO.

Pourquoi ce site en particulier a-t'il eu des problèmes alors ? Bah ce n'est pas moi qui ait réglé ce charset, ce mes collègues qui avaient les premiers constatés le problème et constataient que le site s'affichait preque entièrement correctement quand il était déclaré en UTF-8. Pour le reste des fichiers, ils ont utilisé les codes HTML &code;. J'avais tenté de résoudre cette situation, mais sans succès. En fait, je ne sais pas comment ils se sont débrouillés, mais ils ont encodés leurs sources en UTF-8... Avec Dreamweaver ! Mais oui, c'est ce logiciel qui a créé les premiers fichiers, il devait être configuré ainsi ! Quand à moi je suis passé derrière pour intégrer le code PHP avec mon éditeur de texte dans des fichiers que j'ai créé avec Windows (click droit -> nouveau -> document texte) donc en ANSI, et c'est là que sont apparus les problèmes d'accents. C'est le seul site dont je n'avais pas fait l'intégration HTML... à la main au bloc-notes. Tous les autres sites étaient en ANSI et déclarés en ISO.

Et bien, ça m'a pris du temps, mais ça vallait le coup. Quand je pense que DOS est tellement loin que j'avais oublié que les fichiers textes pouvaient être encodés dans des jeux de caractères différents. Mais c'est la faute de Windows aussi ! Il ne pouvait pas prévenir en affichant dans les propriétés des fichiers le jeu de caractères utilisé, plutôt que de cacher le fait qu'il fait une conversion automatique pour les lire et les enregistrer ? Merci pour vos expériences, sans quoi je n'aurais peut-être jamais repris mes tests et je serais resté dans l'ignorance.
0
Rejoignez-nous