Aller au contenu

Caractères spéciaux et encodage


ElMoustiko

Sujets conseillés

J'ai fait un recherche rapide sur le forum, mais ne sachant pas tellement quels termes chercher, je n'ai pas trouvé grand chose en réponse à ma question.

Donc je la pose ici :

Si je met comme déclaration d'encodage : <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

Je "dis" donc au navigateur que j'utilise les caractères pour l'europe occidentale, donc que je risque d'utiliser les é, à, ù, ... Suis-je alors obligé de mettre é, à, ù... à la place ? Avec cette déclaration d'encodage, je n'ai aucun problème d'affichage de ces caractères. Avec une autre déclaration, j'aurais des petits carré avec point d'intérogation sur firefox par exemple. Alors je me dit que je ne suis pas obligé de remplacer ces caractères par un code.

Seconde question un peu liée, Laurent Denis avait parler d'encodage

Il y a ensuite le serveur qui héberge le site, et qui envoie au navigateur avec chaque page un en-tête HTTP spécifiant l'encodage de la page. Pour que la page soit correctement interprétée, cette information HTTP doit correspondre à l'encodage "réel" ci-dessus.

Dans l'exemple donné sur son blog pour mon cas (xhtml 1.0 traité comme du html) pas de prologue xml, mais déclaration grace à la balise meta, c'est ce que je fait maintenant, mais je n'ai pourtant pas fait d'entete HTTP spécifiant l'encodage, si ?

Voilà @++

Lien vers le commentaire
Partager sur d’autres sites

Le but de définir un jeu de caractères est justement de ne pas avoir besoin de se limiter à l'US-ASCII (ce que tu fais implicitement en utilisant toutes les entités comme é par exemple). Si tu définis ton jeu de caractère de document comme étant iso-8859-1, tu pourras utiliser "telles quelles" les caractères définis dans cet encodage, et tu devras utiliser des entités pour les autres (par exemple les caractères japonais)

Si ton autre déclaration est par exemple l'UTF-8, c'est normal que tu aies des petits carrés, car le code du "é" en iso-8859-1, par exemple, ne correspond à rien en UTF-8 (c'est en fait tout simplement invalide). Par contre si tu enregistres ta page en utilisant l'encodage UTF-8 mais que tu l'envoies comme étant du ISO-8859-1, tu auras alors d'autres caractères (les célèbres û par exemple). Voir openweb pour plus d'explications (notamment les exemples de codage binaires d'un caractère en iso-8859-1 et en utf-8)

Quant à l'en-tête, je n'ai pas trop compris ta question, mais il est possible que Apache envoie une en-tête par défaut si tu n'en envoies pas. Sinon il est conseillé, voire nécessaire, de spécifier soi-même une en-tête Content-Type, soit via Apache et htaccess si les pages sont statiques, soit via la directive php header() si les pages sont dynamiques.

Lien vers le commentaire
Partager sur d’autres sites

Okay, voilà qui éclaire ma lanterne !

Donc il ne me reste plus qu'a encoder le "oe" collé puisqu'il n'est pas dans l'ISO-8859-1 (j'avais lu le pourquoi du comment, c'est parceque l'imprimante du mec qui s'en ai occupé ne pouvais pas l'imprimer si je me souviens bien ! )

Sinon pour l'entete HTTP, tu as en fait compris ma question !

Donc je dois faire un header PHP spécifiant l'encodage en plus de ma balise meta, c'est ca ? (ou via apache et htaccess)

Est ce qu'il serait possible de voir a quoi ca ressemble (via htaccess et via php) si c'est pas trop demandé ?

En fait pour clarifier ma question tout de meme : Est il conseillé de spécifier la balise meta ET un entete HTTP (via php ou htaccess, au choix) ?

@++ et merci de cette clarification

Lien vers le commentaire
Partager sur d’autres sites

Est il conseillé de spécifier la balise meta ET un entete HTTP (via php ou htaccess, au choix) ?

Bonjour,

Si j'ai bien compris ce que j'ai déjà pu lire à ce sujet, la réponse est : oui.

Si la balise meta n'est pas renseignée, il pourrait y avoir des problèmes d'affichage hors connexion par exemple, puisque le navigateur ne reçoit plus les informations de l'entête.

Lien vers le commentaire
Partager sur d’autres sites

_AT_Sylvain, Nudrema semblait dire que le é n'appartenait pas à UTF-8 et que dans ce cas j'aurais bien les caractères de remplacement à la place...

iso-8859-15 contient le "oe" ligaturé, ahhh autant pour moi ! J'aurais pas mal de correction à apporter à mes pages !

_AT_Monique> Oui mais est ce que la balise meta suffit ? Tu as bien precisé qu'en local, l'entete n'avait aucun effet, et en local, si je ne met que la balise meta, ca devrait donc suffire, d'ou "pourquoi les 2 ? "

Encore merci des ces precisions @++

Lien vers le commentaire
Partager sur d’autres sites

Je vais vous montrer un modèle de page standard (EDIT : standard dans le sens basique, classique, de base, ...), et je vous demande si à priori il est vraiment complet et correct

<?php
header('Content-Type: text/html; charset=iso-8859-15');
?>
<!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" xml:lang="fr" lang="fr">
<head>
 <title></title>

 <meta http-equiv="Content-Type" content="text/html; charset="iso-8859-15" />
 <meta http-equiv="Content-Script-Type" content="text/javascript" />
 <meta http-equiv="Content-Language" content="fr" />
 <meta name="author" content="ElMoustiko" />
 <meta name="email" content="elmoustiko_AT_elmoustikoblog.net" />
 
 <link rel="stylesheet" type="text/css" media="screen" href="css/style.css" />
 <link rel="stylesheet" type="text/css" media="print" href="css/print.css" />
 
 <link rel="alternate" type="application/rss+xml" title="RSS" href="/rss/rss.php">

 <script type="text/javascript" src="js/script.js"></script>
</head>

<body>

</body>
</html>

J'ai donc trouvé (sauf erreur) comment faire l'entete PHP pour spécifier l'encodage, mais je n'ai pas trouvé la version avec htaccess. J'aurais aimé savoir pour le cas où mes pages soient statiques.

@++

Modifié par ElMoustiko
Lien vers le commentaire
Partager sur d’autres sites

moi j'utilise ça (évidemment en rajoutant <?php

header('Content-Type: text/html; charset=iso-8859-15');

?> si on a php sous la main)

<?xml version="1.0" encoding="iso-8859-15"?>
<!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" xml:lang="fr" lang="fr">
<!--les 3 balises au dessus pourquoi?-->
<!-- 1ere balise pour preciser que l'on respecte les normes xml version latine francaise-->
<!-- 2eme balise DTD (document type definitions) pour preciser que l'on respects les normes XHTML 1.0 strict-->
<!-- 3eme L'élément racine du document doit être <html>,
lequel doit posséder un espace de noms XHTML par l'intermédiaire de l'attribut xmlns (ns=NameSpaces)
le 2eme lang="fr" n'est là que pour assurer la compatibilité avec les anciens navigateurs-->

<!--balise d'en-tete-->
<head>
<!--le titre est un element important pour une page web da qualite-->
<title>portail des liens favoris de sylvain trovalet fait en XHTML 1.0 et CSS 2 </title>
<!--la balise XML risquant de ne pas être interprétée par les anciens navigateurs,
il conseillé de mettre la balise meta-->

<meta http-equiv="Content-Type" content="text/HTML; charset=iso-8859-15"  />
<!--le lien vers ma page de CSS (Cascading Style Sheets)-->
<style type="text/css">
<!--
@import url(style.css);
-->
</style>
</head>

Pour en revenir à l'utf-8 je n'arrive plus à retrouver la discussion dans la liste des pompeurs, bref désolé. Je me souviens juste que depuis j'avais envisagé de tout passer en UTF-8

Lien vers le commentaire
Partager sur d’autres sites

Pour le prologue xml, Laurent Denis à dit qu'il n'etait pas necessaire (ni recommandé ? ) lorsqu'on ne faisait pas d'xml dans le document html. De plus il entraine l'affichage en mode "quirks" sous IE ce qui n'est pas des mieux.

Sinon pour revenir à UTF contre ISO, l'iso est tout à fait adapté à la langue francaise, donc pourquoi mettre UTF ? qui est je crois plus généraliste, moins précis.

[Edit] j'ai lu ceci apres une recherche (une autre), il n'y a pas grand chose pour specifier l'encodage d'une page via htaccess, voici ce que j'ai apercu :

AddCharset ISO-8859-15 .css

C'etait pour des css, donc j'imagine que pour des pages statiques en mettant

AddCharset ISO-8859-15 .html ca fonctionnera ? Peut on faire .html/.php/..... ou quelque chose du genre dans les htaccess ?

[/edit]

Modifié par ElMoustiko
Lien vers le commentaire
Partager sur d’autres sites

ElMoustiko, je n'ai pas dit qu'il n'y a pas de 'é' dans UTF-8, j'ai dit qu'il était encodé différemment. (j'ai aussi dit voir article sur openweb)

Pour Apache, la vérité est du côté de AddCharset et surtout AddDefaultCharset.

Pour l'iso vs utf-8, je ne comprend pas trop comment on peut parler de précision, disons juste que l'utf-8 est plus complet, permet de représenter davantage de caractères que l'iso-8859-1 ou -15, qui eux ne permettent d'en représenter que 256.

Modifié par Nudrema
Lien vers le commentaire
Partager sur d’autres sites

Au risque de paraître complètement con avec ma question, si l'UTF-8 est plus complet que l'ISO-8859-1, pourquoi tous les sites francophones utilisent-ils l'ISO ? Par pure méconnaissance ? Serions-nous mieux avec l'UTF-8, tout simplement ?

Lien vers le commentaire
Partager sur d’autres sites

Je serais curieux d'avoir des avis plus éclairés, mais il me semble que:

- ISO est plus répandu surtout parcce qu'il était là avant utf-8, qu'utf8 est encore mal connu, et que le webmastering est parfois très conservateur ;)

- les éditeurs (wysiwyg) proposent encore très souvent ISO par défaut, et utf-8 en option.

- utf-8 traîne encore la réputation de ne pas être bien supporté (ce qui est faux).

Cela dit, pour qui n'écrit que dans une seule langue, iso est tout à fait approprié.

Lien vers le commentaire
Partager sur d’autres sites

Cela dit, pour qui n'écrit que dans une seule langue, iso est tout à fait approprié.

Peut-être, mais dans la mesure ou tu aurais à choisir le meilleur des deux (indépendamment du nombre de langues actuelles ou éventuelles de ton site), serait-ce plutôt UTF-8 qui serait à privilégier ? S'il me permet d'inclure tous les caractères de l'ISO-8859-1 PLUS des dizaines d'autres, je crois comprendre que ça fait de lui un charset plus complet que ce fameux ISO.

Lien vers le commentaire
Partager sur d’autres sites

Ahh bah voilà un truc que je ne savais pas !

Mais, parcequ'il y a toujours un "mais" ca deconne quand j'écris directement mon é (e accent aigu) ou un autre caractère spécial, j'ai le fameux carré avec le point d'interrogation : �

Alors qu'avec l'iso-8859-15 mes caractères accentués sont parfaitement pris en compte...

Alors bilan : utf-8 plus complet mais moins bien supporté ?

Vu que je n'utiliserais que du français (ou de l'anglais eventuellement en faible quantité, mais les caractères sont les même donc pas de soucis) et que l'utf-8 m'oblige à encoder mes caractères accentués, il vaut mieux que j'utilise l'iso-8859-15 non ?

@++

Lien vers le commentaire
Partager sur d’autres sites

Alors bilan : utf-8 plus complet mais moins bien supporté ?

Vu que je n'utiliserais que du français (ou de l'anglais eventuellement en faible quantité, mais les caractères sont les même donc pas de soucis) et que l'utf-8 m'oblige à encoder mes caractères accentués, il vaut mieux que j'utilise l'iso-8859-15 non ?

Là, effectivement, ton cas est révélateur d'un éditeur qui n'encode pas en utf-8 (voir l'article de Steve Frécinaux sur OpenWeb) ;)

Le problème actuel de support d'utf-8 tient en fait essentiellement, je crois, à son support par les éditeurs (et non les navigateurs)... et principalement ceux sous Windows, il faut en convenir.

Lien vers le commentaire
Partager sur d’autres sites

On aura quand même dit 3× d'aller voir l'article d'OpenWeb, hein ^^

UltraEdit je sais pas où est le bouton pour sauvegarder, je ne l'ai jamais utilisé...

Denis> Je dirais aussi que c'est parce que l'encodage par défaut de nombreux éditeurs est l'iso-8859-1 ou l'un de ses dérivés (windows-1252 ou macroman). Mais l'iso a aussi ses avantages, par exemple le poids de la page sera légèrement inférieur à la même page en utf-8 si les caractères sont essentiellement nos bons vieux caractères occidentaux (en effet les caractères "éêèàùç«»" pour les plus courants sont codés sur un octet en iso-8859-1 et en deux octets en utf-8... mais bon ce sont des économies de bouts de chandelle...

Comme le dit Sylvain, il faut aussi vérifier lors de l'upload des fichiers que le ftp est en mode binaire, le mode ascii pouvant réserver quelques surprises avec des fichiers en utf-8...

Lien vers le commentaire
Partager sur d’autres sites

  • 7 months later...

Bonjour,

Pour ceux qui sont encore plus ou moins brouillés avec les caractères spéciaux et les problèmes d'encodage, Denis, Normand et toute l'équipe du W3CQébec ont pensé à nous : W3Québec, encodages, jeux de caractères et références d'entité

Hier soir avait lieu la vingt-troisième rencontre publique du W3Québec, au cours de laquelle Normand Lamoureux présentait une conférence sur les encodages, les jeux de caractères et les références d'entité. Une présentation très instructive de 37 minutes qui, j'en suis sûr, vous permettra également de jeter un peu de lumière sur un des thèmes les moins bien maîtrisés du développement Web.

Une fois passé l'effet de surprise de l'accent pour qui n'y est pas habitué, on est captivé par l'exposé de Normand que l'on peut suivre en visualisant les fiches de la présentation et en écoutant le fichier audio :up:

Lien vers le commentaire
Partager sur d’autres sites

Le moment me semble bien choisi pour timidement revenir sur le Hub, après une trop longue absence... que voulez-vous, le travail étant ce qu'il est. Quoi qu'il en soit, j'espère de tout coeur que vous trouverez cette présentation utile car après tout, c'est vraiment un sujet qui en laisse plus d'un perplexe.

Et qui plus est, il ne faut pas oublier que Normand, justement, a une diction supérieure à la moyenne des Québécois qui ont, pour la grande majorité, un accent beaucoup plus prononcé. ;)

Lien vers le commentaire
Partager sur d’autres sites

Bonjour Denis,

Le moment me semble bien choisi pour timidement revenir sur le Hub, après une trop longue absence...

<{POST_SNAPBACK}>

:hourra::hourra::hourra:

Et qui plus est, il ne faut pas oublier que Normand, justement, a une diction supérieure à la moyenne des Québécois qui ont, pour la grande majorité, un accent beaucoup plus prononcé. ;)

J'avoue avoir éclaté de rire quand j'ai entendu Normand s'excuser pour son accent en anglais :lol:

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...