Meilleure réponse
Les autres réponses ne sont pas tout à fait exactes.
Unicode , il est vrai, contient une liste de caractères de presque tous les scripts du monde. Cependant, ce nest quune partie du standard Unicode: le Jeu de caractères codés universels . Le standard Unicode inclut également des règles pour le rendu, lordre, la normalisation et, oui, lencodage de ces caractères Unicode.
UTF-8 est lun des les trois encodages de caractères standard utilisés pour représenter Unicode sous forme de texte informatique (les autres étant UTF-16 et UTF-32). Historiquement, les fichiers texte étaient généralement codés sous forme de séquences doctets où chaque octet représentait un caractère. Cependant, comme un octet ne peut prendre quune des 256 valeurs, cela nest pas possible pour Unicode. Le codage Unicode le plus simple est UTF-32 , qui utilise 4 octets (ou 32 bits) par caractère. Cependant, cela est inefficace dans son utilisation du stockage, de la mémoire et du traitement. Jusquen 1996, on pensait (ou espérait) que 2 octets suffiraient pour représenter chaque caractère Unicode, mais les gens ont ensuite réalisé combien il y avait de caractères chinois. Par conséquent, certains langages tels que JavaScript utilisent toujours 2 octets ( UCS-2 ) pour représenter les caractères, ce qui peut entraîner des problèmes lors de la gestion des caractères tels que \ unicode {x1F60E }. Pour résoudre ce problème, UCS-2 a été remplacé par UTF-16 , où certains caractères étaient représentés par deux unités de code à deux octets au lieu dun. Cela rend la manipulation des chaînes plus complexe (par exemple, calculer la longueur dune chaîne) mais utilise moins despace que UTF-32.
UTF-8 est similaire à UTF-16, sauf que ses unités de code sont toutes dun octet (8 bits) de long, avec des caractères représentés par entre une et quatre unités de code. Les caractères en texte brut (cest-à-dire ASCII) sont tous représentés par un seul octet, dune manière identique aux chaînes non Unicode normales. Cela présente le gros avantage que le texte ASCII hérité est également UTF-8 valide. De plus, les octets représentant lASCII ne sont pas utilisés dans la représentation dautres caractères, de sorte que les programmes hérités qui recherchent ceux-ci ne doivent pas être mis à jour. Ces avantages, combinés au fait que lUTF-8 est normalement le moyen le plus efficace en termes despace stocker du texte Unicode (en particulier pour les textes occidentaux) signifie que la grande majorité des pages Web de nos jours sont encodées en UTF-8.
Réponse
Le programme de traitement de texte doit générer quelque chose (et enregistrer quelque chose dans un fichier). Si vous voulez que les programmes interagissent, que votre programme de traitement de texte communique avec vos pilotes dimprimante et de scanner, par exemple, vous devez décrire comment ils communiquent. Et vous aimeriez le faire efficacement. une norme permet cette intercommunication. Sinon, vos guillemets intelligents Microsoft Word ne fonctionneront pas avec votre imprimante Canon et votre scanner HP. Ce nest pas ce que vous voulez….
Edit ajouté: Voir la réponse de Comet sur la façon dont lunicode est lié à la sémantique (pas à la syntaxe /représentation). Cela rejoint mon point sur linteropérabilité. Vous voulez que votre séquence de caractères soit «significative». Cest pourquoi certaines choses sont représentées en unicode et dautres non. Les utilisateurs de lalphabet latin, les utilisateurs de lalphabet cyrillique, les utilisateurs de lalphabet grec et les utilisateurs de lalphabet turc ont tous une lettre qui ressemble à «a» (bien que dans certaines polices, ils se distinguent et dans dautres pas), mais les écrivains de ces langues les considèrent caractères différents (ils ont une différence sémantique). Ainsi, Unicode les considère comme des points de code différents. Ils représentent une sémantique différente, trient différemment, etc. Il en va de même pour les guillemets gauche et droit et certains caractères accentués. Dans certaines langues, ils font une différence sémantique. Vous obtenez un certain type dinteropérabilité lorsque vous représentez correctement la sémantique.
Vous obtenez un type différent lorsque vous représentez correctement les choses sous forme dimage. Cependant, unicode cherche le premier, pas le second.
Si unicode représentait les homoglyphes comme des caractères uniques, ils auraient alors le problème de savoir quelle police était utilisée et cela détruirait lexactitude sémantique. Une lettre latine a dans une police blackscript est très différente dune lettre Helvétique dune police romaine, etc. Et linclinaison et litalique ne sont pas toujours les mêmes, mais parfois.
Quand je lis des signes en Bulgarie, la plupart fois quils utilisent une police très différente pour leurs caractères cyrilliques de leur transcription latine, il est donc évident que ce sont des caractères différents, même pour des choses comme la lettre «a». Mais parfois ils ne le font pas et quand je vois Bm sur une plaque dimmatriculation, je dois distinguer sil transcrit en Vt en anglais ou sil sagit simplement du latin Bm et il y a des mots entiers comme ça que je dois lire pour savoir quel jeu de caractères ils utilisent.
Et même obtenir lexactitude sémantique est difficile. Le sharp-s allemand nexiste quen minuscules et si vous imprimez le mot en «majuscule», vous utilisez deux caractères S, mais il y a des mots en minuscules qui utilisent deux caractères «minuscules» et dautres qui utilisent des caractères dièse s.
Ainsi, comme presque toutes les normes, lunicode est un compromis. Il essaie dobtenir les bonnes réponses afin que les mots soient correctement représentés et puissent être transmis en lutilisant. Il n’essaie pas d’être «graphiquement» correct, de sorte qu’une séquence unicode décrit sa représentation imprimée sans ambiguïté avec tous les détails prescrits. Vous avez besoin de plus quunicode pour faire cela.
Et, une fois que vous avez emprunté ce chemin, vous avez le problème avec les périphériques qui ne peuvent pas sortir (ou entrer) la description que vous voulez spécifier. Une imprimante à 200 dpi ne peut faire beaucoup et il y a des subtilités quune imprimante à 1200 dpi peut exprimer qui sont simplement perdues à 200 dpi. La question est de savoir si vous vous souciez? Parfois vous le faites, mais dautres fois vous ne le faites pas.
Unicode est bon dans de nombreux cas où vous ne voulez pas et simplement la bonne sémantique. Lorsque vous souhaitez transmettre un mot sans ambiguïté et en sachant quels codets Unicode sont utilisés, sachez comment le mot est orthographié dans une langue naturelle. L’existence d’homoglyphes permet d’être ambiguë, mais ne l’exige pas. Vous pouvez être sans ambiguïté en unicode. Vous ne pouvez tout simplement pas représenter tous les détails sur la façon dont pourrait être imprimé.