Maison  >  Article  >  interface Web  >  Qu'est-ce qu'Unicode, qu'est-ce que UTF-8

Qu'est-ce qu'Unicode, qu'est-ce que UTF-8

WBOY
WBOYoriginal
2016-05-16 12:10:312675parcourir

Je n’ai jamais été très exigeant en codage, donc je ne connais pas grand chose en Unicode et en UTF-8. Récemment, j'ai accidentellement lu un article sur UTF-8 et j'ai senti que l'explication était très compliquée, alors j'ai pensé à écrire un article plus simple et plus facile à comprendre.

Tout d'abord, expliquons certains des schémas de codage couramment utilisés aujourd'hui :

1 En Chine, le codage le plus couramment utilisé en Chine continentale est GBK18030, en. En plus de GBK et GB2312, la relation entre ces codes est la suivante :

Le premier codage de caractères chinois était GB2312, comprenant 6 763 caractères chinois et 682 autres symboles. Le codage a été révisé en 1995 et nommé GBK1.0 ; qui comprenait un total de 21886 symboles. Plus tard, le codage GBK18030 a été lancé, qui comprenait un total de 27 484 caractères chinois, ainsi que le tibétain, le mongol, l'ouïghour et d'autres langues minoritaires majeures. Désormais, la plate-forme WINDOWS doit prendre en charge le codage GBK18030.

Suivent l'ordre de GBK18030, GBK et GB2312, les trois codages sont rétrocompatibles. Le même caractère chinois a le même codage dans les trois schémas de codage.

2. Taiwan, Hong Kong et d'autres endroits utilisent le codage BIG5

3 Japon : codage SJIS

Si divers codages de texte sont décrits comme des dialectes à divers endroits, alors Unicode. C'est une langue développée en coopération par des pays du monde entier.

Dans cet environnement linguistique, il n'y aura plus de conflits d'encodage de langue. Le contenu dans n'importe quelle langue peut être affiché sur le même écran. C'est le plus grand avantage d'Unicode.

Alors, comment Unicode est-il codé ? C'est en fait très simple :

consiste à encoder tout le texte du monde en utilisant 2 octets. Vous vous demandez peut-être, 2 octets peuvent représenter jusqu'à 65536 codes, est-ce suffisant ?

La plupart des caractères chinois de Corée et du Japon ont été transmis depuis la Chine et les polices sont exactement les mêmes. Par exemple : le mot « 文 » est le même caractère chinois en GBK et SJIS, mais l'encodage est différent. De cette façon, avec un codage unifié comme celui-ci, 2 octets suffisent pour accueillir la plupart du texte dans toutes les langues du monde.

Le nom scientifique d'Unicode est "Jeu de caractères codés universels à plusieurs octets", appelé UCS.
Ce qui est actuellement utilisé est UCS-2, qui est un codage sur 2 octets, et UCS-4 a été développé pour éviter que 2 octets ne soient insuffisants à l'avenir. UCS-2 est également appelé plan multilingue de base.
La conversion d'UCS-2 en UCS-4 ajoute simplement 2 octets de 0 devant.
UCS-4 est principalement utilisé pour enregistrer les plans auxiliaires, comme le deuxième plan auxiliaire dans Unicode 4.0
20000-20FFF - 21000-21FFF - 22000-22FFF - 23000-23FFF - 24000-24FFF - 25000-25FFF - 26000-26FFF - 27000-27FFF - 28000-28FFF - 29000-29FFF - 2A000-2AFFF - 2F000-2FFFF
Au total, 16 avions auxiliaires ont été ajoutés, passant des 65536 codes d'origine à près d'un million de codes.

Alors, maintenant que l'encodage a été unifié, comment peut-il être compatible avec les encodages de texte originaux de différents pays ?

À ce stade, une page de code est nécessaire.

Qu'est-ce que la page de code ? Codepage est la table de mappage entre l'encodage de texte de chaque pays et Unicode. Par exemple, la table de mappage entre le chinois simplifié et Unicode est CP936.

Voici plusieurs pages de codes couramment utilisées. Modifiez simplement le numéro de l'adresse ci-dessus en conséquence :

codepage=936 Chinois simplifié GBK
codepage=950 Chinois traditionnel BIG5
codepage = 437 États-Unis/Canada Anglais
codepage=932 Japonais
codepage=949 Coréen
codepage=866 Russe
codepage=65001 unicode UFT-8

Le dernier est 65001, selon Pour ma compréhension personnelle, il ne devrait s'agir que d'une table de mappage virtuelle, mais ce n'est en fait qu'un algorithme.

Prenez une ligne aléatoire de 936, par exemple :

0x9993 0x6ABD #CJK UNIFIED IDEOGRAPH
L'encodage avant est l'encodage GBK, et ce qui suit est Unicode.
En consultant ce tableau, vous pouvez facilement convertir entre GBK et Unicode.

Maintenant que nous comprenons Unicode, qu'est-ce que UTF-8 ? Et pourquoi UTF-8 apparaît-il ?

Convertissez ASCII en UCS-2, insérez simplement un 0x0 avant l'encodage. L'utilisation de ces codages inclura certains caractères de contrôle, tels que ou /, qui provoqueront de graves erreurs sous UNIX et certaines fonctions C. Il est donc certain qu’UCS-2 ne convient pas comme codage externe pour Unicode.

Ainsi, UTF-8 est né. Alors, comment l’UTF-8 est-il codé ? Comment résoudre le problème de l'UCS-2 ?

Exemple :

E4 BD A0   11100100 10111101 10100000
C'est l'encodage UTF-8 du mot "vous"

4F 60  1100000
C'est " L'encodage Unicode de « vous »

est décomposé selon les règles d'encodage UTF-8 comme suit : xxxx0100 xx111101 xx100000
Épissez les nombres sauf x ensemble pour devenir l'encodage Unicode de « vous ».
Faites attention aux trois premiers 1 de l'UTF-8, indiquant que la chaîne UTF-8 entière est composée de 3 octets.
Après l'encodage UTF-8, les caractères sensibles n'apparaîtront plus car le bit le plus élevé est toujours 1.

다음은 유니코드와 UTF-8의 변환 관계표입니다.
U-00000000 - U-0000007F: 0xxxxxxx
U-00000080 - U-000007FF: 110xxxxx 10xxxxxx
U-00000800 - U -0000FFFF: 1110xxxx 10xxxxxx 10xxxxxx
U-00010000 - U-001FFFFF: 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
U-00200000 - U-03FFFFFF: 111110xx 10xxxxxx 10xxxxxx 10 xxxxxx 10xxxxxx
U-04000000 - U-7FFFFFFFF: 1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx

유니코드 인코딩을 UTF-8로 변환하면 됩니다. 유니코드 바이트 스트림을 x에 넣으면 UTF-8이 됩니다.

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn