Utilisateur:Pixeltoo/Unicode et HTML

Les pages web créées en utilisant le langage hypertexte à balises (HTML) pourrait contenir un texte multilingue représenté avec le jeu de caractères universel Unicode.

Le rapport entre Unicode et HTML tend à être un sujet difficile pour beaucoup de professionnels de l'informatique, pour les auteurs de documents web, tout comme pour les simples utilisateurs du web. La représentation exacte et appropriée du texte, dans les pages web, pour les différentes langues naturelles et systèmes d'écriture est compliqué par les détails d'encodage de caractères, la syntaxe du langage de balisage, la police de caractères, et par les différents niveaux de support des navigateurs web.

Caractères des documents HTML

modifier

Les pages web sont essentiellement des documents HTML ou XHTML. Les deux types de documents sont constitués de caractères qui sont des graphèmes ou des unités similaires à ces derniers, indépendamment de comment ils sont stockés dans les systèmes de mémoire informatique et de réseaux informatique.

Un document HTML est une séquence de caractères Unicode. Plus précisément, les documents HTML 4.0 doivent impérativement être composés de caractères appartenant au jeu de caractères des documents HTML : un répertoire de caractères dans lequel est assigné un unique code de point entier non négatif. Ce jeu est défini dans le DTD du HTML 4.0, qui détermine également la syntaxe qui permet de produire un HTML valide. Le jeu de caractères des documents HTML pour HTML 4.0 est constitué de la plupart des caractères définis conjointement par Unicode et ISO/IEC 10646 : le jeu universel de caractères (Universal Character Set, UCS)

Like HTML documents, an XHTML document is a sequence of Unicode characters. However, an XHTML document is an XML document, which, while not having an explicit "document character" layer of abstraction, nevertheless relies upon a similar definition of permissible characters that cover most, but not all, of the Unicode/UCS character definitions. The sets used by HTML and XHTML/XML are slightly different, but these differences have little effect on the average document author.

Regardless of whether the document is HTML or XHTML, when stored on a file system or transmitted over a network, the document's characters are encoded as a sequence of bit octets (bytes) according to a particular character encoding. This encoding may either be a Unicode Transformation Format, like UTF-8, that can directly encode any Unicode character, or a legacy encoding, like Windows-1252, that can't.

Les pages Web sont typiquement des documents HTML ou bien XHTML. Les deux types de documents consistent, à un niveau fondamental, de caractères, qui sont des unités de graphèmes et des "grapheme-like", indépendamment de comment ils sont stockés dans les systèmes de mémoire informatique et de réseaux informatique.

Un document HTML est une séquence de caractères Unicode.

Que le document soit en HTML ou en XHTML, lorsqu'il est stocké sur un système de fichier ou transmis sur un réseau, les caractères du document sont numérisés comme séquence de bit/octets d'après un codage de caractère particulier. Le codage peut être un des UCS Transformation Format, comme UTF-8, qui peut directement coder n'importe quel caractère Unicode, ou un codage de caractère plus ancien comme Windows-1252, qui ne peut pas.

Les références de caractères permettent de s'abstraire de l'encodage du document.

Détermination de l'encodage de caractères

modifier

Afin d'interpréter correctement le HTML, un navigateur web doit supposer quel caractère Unicode est représenté par la forme encodée d'un document HTML. Pour ce faire, le navigateur web doit savoir quel encodage a été utilisé. Quand un document est transmis via un message MIME ou une couche de transport qui utilise un contenu de type MIME telle qu'une réponse HTTP, le message peut signaler l'encodage via un entête Content-Type, tel que Content-Type: text/html; charset=ISO-8859-1. D'autres moyens externes pour déterminer l'encodage sont autorisés, mais rarement utilisés. L'encodage peut également être déclaré à l'intérieur même du document, sous la forme d'un élément META, comme <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">. En l'absence de toute déclaration d'encodage, le défaut dépend de la configuration de la localisation du navigateur. Sur un système configuré essentiellement pour les langues ouest-européennes, ce sera généralement ISO-8859-1 ou l'une de ses extensions comme Windows-1252 ou ISO-8859-15. Pour un navigateur où les caractères multi-octets sont la norme, une forme d'autodétection sera surement appliquée. Une mauvaise connaissance du codage utilisé peut aboutir à un affichage dégradé des caractères, notamment du caractère euro.

Les encodages 8 bits locaux sont plus anciens que l'Unicode et de ce fait plus utilisés dans certaines zones géographiques. A cause de ces habitudes, notamment dans les langages de programmation et systèmes d'exploitation, et du désir d'éviter d'ennuyer les utilisateurs avec la nécessité de comprendre les nuances d'encodage, beaucoup d'éditeurs de textes utilisé par les auteurs HTML sont incapables ou non-désireux d'offrir le choix de l'encodage, lors du stockage d'un fichier sur le disque, et souvent ne permettent pas la saisie de charactères en dehors d'une plage de valeur très limitée. En conséquence, beaucoup d'auteurs HTML sont totalement inconscients des problématiques d'encodage et peuvent n'avoir aucune idée de l'encodage utilisé dans leurs documents. Il est aussi communément mal compris que la déclaration d'encodage n'affecte pas l'encodage effectif, vu qu'il ne s'agit que d'une étiquette informative qui peut ne pas être exacte.

Beaucoup de documents HTML se présentent avec des déclarations d'encodage inappropriées, ou sans aucune declaration. Afin de déterminer l'encodage dans de tels cas, beaucoup de navigateurs permettent à l'utilisateur de sélectionner manuellement un encodage dans une liste. Ils peuvent également employer un algorithme d'auto-detection qui travaille de concert avec la configuration manuelle. La surcharge manuelle peut s'appliquer à tous les documents, ou seulement à ceux pour lesquels l'encodage ne peut pas être déterminé par les declarations et/ou les "patterns octets". La présence d'une surcharge manuelle, et le fait qu'elle soit largement utilisée et adoptée par les utilisateurs, cachent l'imprécision des déclarations d'encodage sur le Web ; en conséquence de quoi, le problème risque de persister. Cela a été résolu d'une certaine manière par XHTML, qui, étant de l'XML, nécessite que la déclaration d'encodage soit précisée, et qu'aucun contournement ne soit employé quand elle est inadaptée.

Support des navigateurs Web

modifier

Certains navigateurs web tels que Mozilla Firefox, Opera, et Safari, sont capables d'afficher des pages web multilingues en choisissant intelligemment une police pour afficher chaque caractère de la page. Ils afficheront correctement n'importe quel mélange de Unicode blocks, pour peu que les polices appropriées soient présentes dans le système d'exploitation.

Internet Explorer pour Windows est capable d'afficher le jeu complet de caractères unicode, mais les caractères qui ne sont pas présents dans la première police disponible ne s'afficheront que si ils sont présents dans les designated fallback font for the current international script[1] (par exemple, seule la police Arial sera utilisée pour le texte Latin, ou Arial Unicode MS si elle est préalablement installée ; quant aux autres polices définies, elles sont ignorés).[2] Si l'encodage du caractère n'ai pas reconnu, Internet Explorer affichera des rectangles en lieu et place des caractères non reconnus. C'est la raison pour laquelle les auteurs de page web doivent définir plusieurs polices qui seraient susceptibles d'être présentes sur l'ordinateur de l'utilisateur, en les déclarant manuellement comme choix prioritaire. Microsoft recommande les CSS ou feuilles de style en cascade pour déclarer les polices désirées. The characters in the table above haven't been assigned specific fonts, yet most should render correctly if appropriate fonts have been installed.

D'anciens navigateurs, tels que Netscape Navigator 4.77, ne peuvent afficher que du texte supporté par le current font associated with the character encoding of the page, and may misinterpret numeric character references as being references to code values within the current character encoding, rather than references to Unicode code points. When you are using such a browser, it is unlikely that your computer has all of those fonts, or that the browser can use all available fonts on the same page. As a result, the browser will not display the text in the examples above correctly, though it may display a subset of them. Because they are encoded according to the standard, though, they will display correctly on any system that is compliant and does have the characters available. Further, those characters given names for use in named entity references are likely to be more commonly available than others.

Pour l'affichage des caractères en dehors du Basic Multilingual Plane, comme le Gothic letter faihu dans la table ci-dessus, certains systèmes (comme Windows 2000) requièrent des ajustements manuels de leur configuration. Fonts with larger unicode block coverage and vast character set are better than regular fonts.

References

modifier
  1. Microsoft (2006), “Globalization Step-by-Step: Fonts” at Microsoft Global Development and Computing Portal. URL retrieved on 2006-04-26.
  2. Girt By Net (2005), “Internet Explorer Makes Me ☹” at girtby.net. URL retrieved on 2006-04-26.

Voir aussi

modifier

Liens externes

modifier