5568 sujets
Sémantique web et HTML
Il s'agit souvent (si c'est le numéro 146...) de l'apostrophe, résultat d'un copier/coller un peu trop rapide depuis Word ou un autre éditeur de texte.
Il suffit, un par un ou avec un bon vieux chercher/remplacer des familles, de les remplacer par l'entité numérique correspondante. Ou bien de mettre à leur place des " ' "... comme ça, aucun souci.
Il suffit, un par un ou avec un bon vieux chercher/remplacer des familles, de les remplacer par l'entité numérique correspondante. Ou bien de mettre à leur place des " ' "... comme ça, aucun souci.
Bonjour,
je te renvoie aux nombreux posts sur le sujet du forum encodage. Pour qu'un document soit correctement encodé et restitué, il faut
- d'abord qu'il soit effectivement créé dans le jeu de caractère visé. C'est le rôle du CMS, de l'éditeur HTML, etc.
- ensuite que ce jeu de caractère soit précisé comme il faut via en-tête HTTP d'abord, meta ou prologue XML ensuite.
- enfin que son exploitation soit supportée côté client, notament pour ce qui est de la correspondance caractère unicode - glyphe d'une police de caractères adaptée.
Ta meta sera sans effet si elle ne reflète pas l'encodage réel du document. Elle ne changera rien non plus à la présence de caractères encodés de manière erronée.
Modifié par Laurent Denis (09 Sep 2005 - 15:17)
je te renvoie aux nombreux posts sur le sujet du forum encodage. Pour qu'un document soit correctement encodé et restitué, il faut
- d'abord qu'il soit effectivement créé dans le jeu de caractère visé. C'est le rôle du CMS, de l'éditeur HTML, etc.
- ensuite que ce jeu de caractère soit précisé comme il faut via en-tête HTTP d'abord, meta ou prologue XML ensuite.
- enfin que son exploitation soit supportée côté client, notament pour ce qui est de la correspondance caractère unicode - glyphe d'une police de caractères adaptée.
Ta meta sera sans effet si elle ne reflète pas l'encodage réel du document. Elle ne changera rien non plus à la présence de caractères encodés de manière erronée.
Modifié par Laurent Denis (09 Sep 2005 - 15:17)
a écrit :
Ta meta sera sans effet si elle ne reflète pas l'encodage réel du document.
Ca veux dire quoi? Je croyais justement que cette meta disait que les caractère spéciaux étaient admis dans le document et qu'on avait de ce fait, pas besoin de les encoder.
a écrit :
d'abord qu'il soit effectivement créé dans le jeu de caractère visé. C'est le rôle du CMS, de l'éditeur HTML
Donc je ne suis pas obligé de modifier tout les caractères spéciaux de mon texte à la main? (J'éspère parce que remplaçer chaque caractère spéciaux par son code c'est long...). Comment faire avec l'éditeur HTML pour encoder correctement?
PS: Désolé d'avoir mis en double mon précédent message. J'ai prévenu un modérateur pour qu'il corrige cela.
Modifié par mathmax (09 Sep 2005 - 16:10)
Je crois qu'il est temps pour toi de revenir à quelques bases (cela dit sans aucune méchanceté). Je te conseille, avant d'aller plus loin, la lecture de cet article sur les jeux de caractères qui devrait t'en apprendre beaucoup
Bonne lecture!
Modifié par Gilles (09 Sep 2005 - 17:33)
Bonne lecture!
Modifié par Gilles (09 Sep 2005 - 17:33)
Merci pour le lien. Je l'ai lu. j'ai même téléchargé l'éditeur de texte Unired pour encoder mes pages en ISO-8859-1. Seulement voilà, je ne comprends toujours pas pourquoi les certains caractères comme les apostrophes sont affichés comme erreur par le validateur du W3C alors qu'il font parti du jeu de caractère ISO-8859-1. Ils sont d'ailleurs correctement affiché dans ma page (preuve qu'il sont bien reconnu par le navigateur comme caractère de l'ISO-8859-1). De plus quand je demande à Unired d'encoder un texte en ISO-8859-1, rien ne change. Ne fait-il pas ça justement parce que tous les caractères de mon texte sont compris dans l'ISO-8859-1?
Bonjour,
Il n'en font pas partie. Ils font partie du jeu de caractères dérivé d'ISO-8859-1 par Microsoft, nommé Windows 1252.
Windows 1252 diffère d'ISO-8859-1 sur une trentaine de caractères (voir l'article d'openweb sur les caractères illégaux en HTML). Pour ajouter ceux-ci, Windows 1252 utilise une plage de code réservée, dans les encodages normalisés du Web (Unicode), à des codes de contrôle peu utilisés. D'où l'invalidité : le document comporte effectivement des "choses" qui ne sont pas des caractères acceptables.
Les processus de récupération d'erreur des navigateurs t'induisent en erreur.
Etant donné que de très nombreuses pages supposées être en ISO-8859-1 sont, comme les tiennes, en réalité en Windows 1252, les navigateurs sous Windows ont depuis longtemps intégré le principe de traiter les caractères erronés en ISO-8859-1 comme si la page était correctement signalée comme encodée en windows 1252.
Précisons que ce processus de récupération d'erreur est absent sous d'autres OS, et ne joue pas lorsque le contenu est réutilisé (un simple copié collé de ta page peut générer des erreurs).
Recommandation finale : utiliser les encodages Unicode normaux pour ces caractères (article OpenWeb). Ou les remplacer par d'autres caractères équivalents, mais non problématiques (pour l'apostrophe, la ligature oe, le point de suspension et les tirets)
Modifié par Laurent Denis (10 Sep 2005 - 15:01)
mathmax a écrit :
Seulement voilà, je ne comprends toujours pas pourquoi les certains caractères comme les apostrophes sont affichés comme erreur par le validateur du W3C alors qu'il font parti du jeu de caractère ISO-8859-1.
Il n'en font pas partie. Ils font partie du jeu de caractères dérivé d'ISO-8859-1 par Microsoft, nommé Windows 1252.
Windows 1252 diffère d'ISO-8859-1 sur une trentaine de caractères (voir l'article d'openweb sur les caractères illégaux en HTML). Pour ajouter ceux-ci, Windows 1252 utilise une plage de code réservée, dans les encodages normalisés du Web (Unicode), à des codes de contrôle peu utilisés. D'où l'invalidité : le document comporte effectivement des "choses" qui ne sont pas des caractères acceptables.
mathmax a écrit :
Ils sont d'ailleurs correctement affiché dans ma page (preuve qu'il sont bien reconnu par le navigateur comme caractère de l'ISO-8859-1).
Les processus de récupération d'erreur des navigateurs t'induisent en erreur.
Etant donné que de très nombreuses pages supposées être en ISO-8859-1 sont, comme les tiennes, en réalité en Windows 1252, les navigateurs sous Windows ont depuis longtemps intégré le principe de traiter les caractères erronés en ISO-8859-1 comme si la page était correctement signalée comme encodée en windows 1252.
Précisons que ce processus de récupération d'erreur est absent sous d'autres OS, et ne joue pas lorsque le contenu est réutilisé (un simple copié collé de ta page peut générer des erreurs).
Recommandation finale : utiliser les encodages Unicode normaux pour ces caractères (article OpenWeb). Ou les remplacer par d'autres caractères équivalents, mais non problématiques (pour l'apostrophe, la ligature oe, le point de suspension et les tirets)
Modifié par Laurent Denis (10 Sep 2005 - 15:01)
mathmax a écrit :
Ta meta sera sans effet si elle ne reflète pas l'encodage réel du document.
Ca veux dire quoi? Je croyais justement que cette meta disait que les caractère spéciaux étaient admis dans le document et qu'on avait de ce fait, pas besoin de les encoder.
Non. Que ce soit dans un en-tête HTTP, une meta ou un prologue XML, une information charset=ISO8858-1 ne fait qu'une seule chose : elle dit au navigateur à quel tableau de correspondance entre code et caractère il doit se référer (pour simplifier).
Si tu renvoies le navigateur à un tableau qui n'est pas le bon (ton caractère n'y figure pas à cette place), il n'arrivera pas au bout du processus au caractère espéré. Par exemple, en prenant un navigateur non windows qui ne procède pas à la récupération d'erreur expliquée dans le message précédent :
- si ton document comporte un caractère ligature oe minuscule encodé 9C à la manière windows 1252
- et que tu signales ton document comme étant de l'ISO-8859-1,
- le navigateur ira chercher ce qu'il y a dans la case 9C du tableau ISO-8859-1, et tombera sur le code de contrôle "ST" (Qui diable sait ce qu'il signifie, d'ailleurs). Ce n'est ni le caractère que tu attendais, ni même un caractère, en fait.
Là où se trouve peut-être l"origine de ta confusion (que tu n'es pas le seul à faire, rassure-toi ), c'est que le choix d'un charset approprié évite en effet la peine d'encoder soi-même à la main les caractères spécifiques que ce jeu de caractères contient.
Par exemple :
- en us-ascii, le caractère é (e accent aigu) n'existe pas. Il faut l'encoder à la main, sous la forme é ou sous la forme é . En revanche, en ISO-8859-1, ce caractère peut être écrit directement "é", car il est présent dans le jeu.
- en ISO-8859-1, le caractère ligature oe minuscule n'existe pas. Il faut l'encoder à la main œ ou œ . En revanche, en ISO-8859-15, il existe, et peut être saisi directement... (Et à la différence de windows 1252, il existe à une position valide dans le tableau).
mathmax a écrit :
Comment faire avec l'éditeur HTML pour encoder correctement?
- T'assurer que ton éditeur ou ton CMS produit effectivement de l'ISO-8859-1 et pas du Windows 1252 ou autre chose
- Faire très attention avec les textes récupérés d'une application Windows, pour les caractères problématiques énumérés dans http://openweb.eu.org/articles/caracteres_illegaux/
Modifié par Laurent Denis (10 Sep 2005 - 15:04)
Le vrai caractère apostrophe se trouve en position 39 et c'est celui qui apparaît quand tu saisis du texte pur.
Il ne pose aucun problème, car il est avant la position 128, et tous les jeux de caractères possèdent les mêmes 127 premiers caractères.
Là où ça se complique, c'est que certaines applications (Word par exemple) remplacent systématiquement le véritable apostrophe par une version plus stylisée (plus arrondie) de ce même caractère, car l'original est en principe absolument droit.
Ainsi, un simple copier-coller et paf, le mauvais caractère apparaît.
Comparez ci-dessous :
le premier est la version normale, la deuxième la version 146 (désolé si vous n'utilisez pas windows, c'est le caractère erroné, justement) :
'’
En fait, à la base, il est censé servir à délimiter un texte entre apostrophe (ce qui est plutôt rare) :
Ainsi il existe une "apostrophe ouvrante" en position 145 : ‘
Exemple :
c'est pas un texte entre «guillemets» mais entre ‘apostrophes’
Comme autres caractères interdits, on trouve aussi, entre autres :
€ le signe euro qui n'est pas au bon endroit
… les trois points
‰ le pour mille
“ ” des autres guillemets un peu plus stylisés que les simples
– — des tirets un peu particuliers
œ le fameux oe introuvable en iso-8859-1
pour savoir comment les coder comme il faut, cf openweb.
Voilà je pense que mon long discours doit éclairer un peu.
Modifié par QuentinC (10 Sep 2005 - 16:48)
Il ne pose aucun problème, car il est avant la position 128, et tous les jeux de caractères possèdent les mêmes 127 premiers caractères.
Là où ça se complique, c'est que certaines applications (Word par exemple) remplacent systématiquement le véritable apostrophe par une version plus stylisée (plus arrondie) de ce même caractère, car l'original est en principe absolument droit.
Ainsi, un simple copier-coller et paf, le mauvais caractère apparaît.
Comparez ci-dessous :
le premier est la version normale, la deuxième la version 146 (désolé si vous n'utilisez pas windows, c'est le caractère erroné, justement) :
'’
En fait, à la base, il est censé servir à délimiter un texte entre apostrophe (ce qui est plutôt rare) :
Ainsi il existe une "apostrophe ouvrante" en position 145 : ‘
Exemple :
c'est pas un texte entre «guillemets» mais entre ‘apostrophes’
Comme autres caractères interdits, on trouve aussi, entre autres :
€ le signe euro qui n'est pas au bon endroit
… les trois points
‰ le pour mille
“ ” des autres guillemets un peu plus stylisés que les simples
– — des tirets un peu particuliers
œ le fameux oe introuvable en iso-8859-1
pour savoir comment les coder comme il faut, cf openweb.
Voilà je pense que mon long discours doit éclairer un peu.
Modifié par QuentinC (10 Sep 2005 - 16:48)
QuentinC a écrit :
Le vrai caractère apostrophe se trouve en position 39 et c'est celui qui apparaît quand tu saisis du texte pur.
Il ne pose aucun problème, car il est avant la position 128, et tous les jeux de caractères possèdent les mêmes 127 premiers caractères.
Là où ça se complique, c'est que certaines applications (Word par exemple) remplacent systématiquement le véritable apostrophe par une version plus stylisée (plus arrondie) de ce même caractère, car l'original est en principe absolument droit.
En typographie, l’apostrophe correcte est l’apostrophe courbe :
http://fr.wikipedia.org/wiki/Apostrophe_(typographie)
L’apostrophe droite est couramment utilisée car facilement accessible sur le clavier.
QuentinC a écrit :
Au fait, pourquoi ces caractères sont-ils invalides ? A quoi servent-ils dans le véritable iso-8859-1 ?
Ce sont des caractères de contrôle, utilisables par exemple dans un terminal je suppose. Ils sont invalides car non autorisés dans les documents HTML.
Modifié par Bobe (10 Sep 2005 - 17:36)
Pourquoi alors les polices n'ont pas une image d'apostrophe arrondi directement dans la case 39 ? Au lieu d'occuper des places supplémentaires pour des apostrophes somme toute rarement utilisées ?
Justement, j'aimerais en savoir plus sur ce à quoi sont destinés ces combinaisons de 128 à 159. Je pense que ça doit venir de linux mais.....
D'ailleurs, à quoi servent les codes de 0 à 31 ? C'est un peu la même question...
a écrit :
Ce sont des caractères de contrôle, utilisables par exemple dans un terminal je suppose. Ils sont invalides car non autorisés dans les documents HTML.
Justement, j'aimerais en savoir plus sur ce à quoi sont destinés ces combinaisons de 128 à 159. Je pense que ça doit venir de linux mais.....
D'ailleurs, à quoi servent les codes de 0 à 31 ? C'est un peu la même question...
QuentinC a écrit :
Pourquoi alors les polices n'ont pas une image d'apostrophe arrondi directement dans la case 39 ? Au lieu d'occuper des places supplémentaires pour des apostrophes somme toute rarement utilisées ?
Je pense que tu voulais dire "jeux de caractères" et non "polices".
La plupart des jeux de caractères ont gardé la compatibilité avec l’ascii. Après,
pourquoi l’ascii a une apostrophe droite et non courbe à la position 39, aucune idée.
Je pense que l’apostrophe droite devait déjà être très utilisée en programmation, et a donc à l’époque été préférée à l’apostrophe courbe.
Ou bien il faut remonter jusqu’à l’époque des machines à écrire, comme le suggère l’article du wikipedia.
a écrit :
D'ailleurs, à quoi servent les codes de 0 à 31 ? C'est un peu la même question...
Pareil, ce sont des caractères de contrôle. Sauf que là, trois de ces caractères sont autorisés : La tabulation horizontale, le retour chariot et le saut de ligne.
Modifié par Bobe (10 Sep 2005 - 21:35)
Pour l’indication formelle interdisant ces caractères, c’est ici :
http://www.la-grange.net/w3c/html4.01/sgml/sgmldecl.html
Il en est également fait mention ici (page 6) :
http://www.ietf.org/rfc/rfc2070.txt
Après, pour la raison logique de cette interdiction, je pense que c’est parce que ces caractères n’ont aucune utilité dans un document HTML, et pourraient par exemple provoquer des dysfonctionnements dans un terminal si on y affichait le document en question.
http://www.la-grange.net/w3c/html4.01/sgml/sgmldecl.html
CHARSET
BASESET "ISO Registration Number 177//CHARSET
ISO/IEC 10646-1:1993 UCS-4 with
implementation level 3//ESC 2/5 2/15 4/6"
DESCSET 0 9 UNUSED
9 2 9
11 2 UNUSED
13 1 13
14 18 UNUSED
32 95 32
127 1 UNUSED
128 32 UNUSED
160 55136 160
55296 2048 UNUSED -- REMPLAÇANTS --
57344 1056768 57344
Il en est également fait mention ici (page 6) :
http://www.ietf.org/rfc/rfc2070.txt
a écrit :
NOTE -- the above SGML declaration, like that of HTML 2.0,
specifies the character numbers 128 to 159 (80 to 9F hex) as
UNUSED. This means that numeric character references within that
range (e.g. ’) are illegal in HTML. Neither ISO 8859-1 nor
ISO 10646 contain characters in that range, which is reserved for
control characters.
Après, pour la raison logique de cette interdiction, je pense que c’est parce que ces caractères n’ont aucune utilité dans un document HTML, et pourraient par exemple provoquer des dysfonctionnements dans un terminal si on y affichait le document en question.
a écrit :
Faire très attention avec les textes récupérés d'une application Windows, pour les caractères problématiques énumérés dans http://openweb.eu.org/articles/caracteres_illegaux/
Justement. La pluspart des textes que je récupère vienne de Word et sont donc, si j'ai bien compris encodés en windows 1252.
Comment alors encoder les carctères spéciaux en ISO-8859-1 sans les faire uns à uns à la main. Existe t-il un programme qui transforme un texte "windows 1252" en un "ISO-8859-1".
pour savoir comment les coder comme il faut, cf openweb.
Je suis justement allé sur Openweb (conseil de Gilles ), et je ai téléchargé un programme s'appelant Unired qui été en lien sur la page. Ce programme permet-il de faire la transcription dont j'ai besoin? Sinon, j'utilise Dreamweaver com éditeur html. Fait-il la transcription "windows 1252"/ "ISO-8859-1"?
Je connais comment on encode les caractères (là n'est pas mon problème). Le problème c'est que j'ai beaucoup de texte et que je voudrais éviter de faire toute ces correction à la main à la main...
Merci d'avance.