476 Shares 9464 views

UTF-8 – codage de caractères

Unicode prend en charge pratiquement tous les jeux de caractères existants. La meilleure forme de codage de caractères Unicode est l'encodage UTF-8. Il prend en charge la compatibilité avec ASCII, résistance à la déformation des données, l'efficacité et la facilité de traitement. Mais tout d'abord.

sous forme de codage

Les ordinateurs fonctionnent non seulement sous forme de nombres d'objets mathématiques abstraits, ainsi que les combinaisons d'unités de stockage et de traitement de données de taille fixe – octets et mots de 32 bits. norme de codage doit tenir compte au moment de déterminer la façon de présenter le nombre de caractères.

Dans les systèmes informatiques, les entiers mémorisés dans les cellules de mémoire de 8 bits (1 octet), 16 ou 32 bits. Chaque forme définit un codage Unicode, laquelle séquence de cellules de mémoire est un nombre entier correspondant à un symbole particulier. Dans la norme, il existe trois différentes formes de codage des caractères Unicode 8, 16 et des blocs de 32 bits. En conséquence, ils sont connus comme UTF-8, UTF-16 et UTF-32. Nom UTF signifie Unicode Transformation Format. Chacune des trois formes de moyens de codage est le caractère Unicode égale de représentation présente des avantages dans diverses applications.

Le chiffrement des données peut être utilisé pour représenter tous les caractères de la norme Unicode. Ainsi, ils sont entièrement compatibles avec des solutions pour diverses raisons, en utilisant différentes formes de codage. Chaque codage peut être converti sans ambiguïté dans l'une des deux autres sans perte de données.

principe nenalozheniya

Chacune des formes de codage Unicode développé en vue de chevauchement partiel non. Par exemple, Windows Forms-932 les caractères d'un ou deux octets de code. La longueur de séquence dépend du premier octet, de sorte que les valeurs de premier plan d'octets dans la série de deux octets et un octet disjoints. Cependant, la valeur d'un seul octet et une séquence d'octets de queue peuvent coïncider. Cela signifie par exemple que la recherche de caractères D (Code 44) peut la trouver par erreur entrant dans la seconde partie de la séquence de caractères de deux octets « D » (code 84 44). Pour savoir quelle séquence est correcte, le programme devrait prendre en compte les octets précédents.

La situation est compliquée, si le match d'attaque et de fuite octets. Cela signifie que pour lever l'ambiguïté sera une recherche inversée avant d'atteindre le début du texte ou la séquence de code unique. Ceci est non seulement inefficace, mais il est pas protégé contre les erreurs possibles, car un seul mauvais octet dans le texte intégral est devenu illisible.

Conversion de format Unicode permet d'éviter ce problème, car la valeur du premier, de fuite et une seule unité de stockage ne sont pas les mêmes informations. Cela garantit que tous les Unicode pour la recherche et la comparaison, ne jamais donner des résultats erronés en raison de la coïncidence des différentes parties du code de caractère. Le fait que ces formes de codage observent le principe nenalozheniya, les distingue des autres encodages multi-octets Est asiatique.

Un autre aspect nonintersection encodages Unicode est que chaque personnage a une frontière clairement définie. Ceci élimine la nécessité d'analyser un nombre indéfini de symboles précédents. Cette fonction est parfois appelée encodage auto-synchronisant. Distorsion des unités de code introduira une distorsion d'un seul caractère, et les personnages environnants sont encore intacts. Dans la conversion de format 8 bits, si les points de pointeur sur l'octet, en commençant par 10xxxxxx (en code binaire) pour trouver le début du symbole est nécessaire pour un à trois transitions inverses.

cohérence

Unicode Consortium soutient pleinement les 3 formes de codages. Il est important de ne pas opposer à l'UTF-8 et Unicode, comme tous les formats de conversion – formes tout aussi valables de réalisation de la norme de codage de caractères Unicode.

Byte orientation

Pour représenter UTF-32 caractères aura besoin d'une unité de code 32 bits, qui coïncide avec le code Unicode. UTF-16 – une à deux unités de 16 bits. Un UTF-8 utilise jusqu'à 4 octets.

codage UTF-8 est conçu pour être compatible avec les systèmes à base ASCII orienté octet. La plupart des logiciels existants et la pratique des technologies de l'information depuis longtemps fié à l'des caractères dans une séquence d'octets. Plusieurs protocoles dépend de la constance du codage ASCII et utilise soit évite les caractères de contrôle spéciaux. Une façon simple d'adapter à des situations Unicode peut, en utilisant le codage 8 bits pour représenter les caractères Unicode, un caractère ASCII équivalent ou un caractère de contrôle. A cette fin, et il est l'encodage UTF-8.

longueur variable

UTF-8 – codage de longueur variable, comprenant des unités de stockage de 8 bits, les bits de poids fort qui indiquent à quelle partie de la séquence de chaque octet individuel appartient. Une plage de valeurs attribuées au premier élément de la séquence de code, un autre – pour l'autre. Cela fournit un codage disjoints.

ASCII

codage UTF-8 est codes ASCII entièrement pris en charge (0x00-0x7F). Cela signifie que les caractères Unicode U + 0000-U + 007F sont convertis en UTF-8 0x00-0x7F seul octet et ainsi devenir impossible de distinguer ASCII. De plus, pour éviter toute ambiguïté, la valeur 0x00-0x7F pas plus utilisé en une seule représentation d'octets de caractères Unicode. Pour coder des symboles neideograficheskih autre que ASCII, en utilisant une séquence de deux octets. Les symboles sont représentés vont U + 0800 U + FFFF par trois octets, et des codes supplémentaires avec plus de U + FFFF nécessitent quatre octets.

champ d'application

Encodage UTF-8 est généralement donné la préférence dans le protocole HTML, etc..

XML est devenu le premier standard avec un support complet pour l'encodage UTF-8. Les organismes de normalisation recommandent également. problème de soutien à l'adresse URL qui est différent des caractères ASCII, a été résolu lorsque le W3C consortium et le groupe d'ingénierie IETF sont parvenus à un accord sur le codage de toutes les adresses URL exclusivement en UTF-8.

La compatibilité avec ASCII facilite la transition vers le nouveau logiciel. Avec UTF-8 fonctionne la plupart des éditeurs de texte, y compris JEdit, Emacs, BBEdit, Eclipse, et "Bloc-notes" le système d'exploitation Windows. Aucune autre forme de codage Unicode ne peut se vanter d'un tel support de l'outil.

codage avantage est qu'il est constitué d'une séquence d'octets. Avec chaîne UTF-8 est facile à travailler en C et d'autres langages de programmation. Ceci est la seule forme de codage, l'ordre ne nécessite pas d'étiquettes octets de nomenclature ou une déclaration de codage en XML.

auto-synchronisation

Dans un environnement qui utilise des symboles de 8 bits du traitement par rapport aux autres jeux de caractères multi-octet, UTF-8 présente les avantages suivants:

  • La première séquence de code d'octets contient des informations sur sa longueur. Cela augmente l'efficacité de la recherche directe.
  • Simplifié trouver le début du symbole en tant que l'octet de départ est limitée à une plage fixe de valeurs.
  • Aucune valeur d'octets d'intersection.

Comparer les avantages

Codage UTF-8 est compact. Mais quand il est utilisé pour le codage de caractères asiatiques (chinois, japonais, coréen, chinois écrit en utilisant des signes) utilisé des séquences de 3 octets. Aussi codage UTF-8 est inférieure à d'autres formes de codage la vitesse de traitement. A lignes de tri binaire produit le même résultat que le binaire de tri Unicode.

Le schéma de codage de caractères

Le schéma de codage de caractères comprend le codage des symboles forme et un procédé pour les unités de code d'emplacement unique octet. Pour déterminer le schéma de codage standard Unicode permet l'utilisation d'une marque d'ordre d'octet initial (BOM, Byte marque d'ordre).

Lorsque la nomenclature dans la balise fonction UTF-8 est limitée que par référence à l'utilisation de formes de codage. Les problèmes dans la détermination de l'UTF-8 endian ont, comme la taille de l'unité de codage est d'un octet. Utilisation de la nomenclature pour cette forme de codage n'est nécessaire ni recommandé. BOM peut se produire dans le texte à convertir d'autres codages utilisant la marque d'ordre d'octet ou de signature pour l'encodage UTF-8. Est une séquence de 3 octets EF BB 16 16 BF 16.

Comment définir l'encodage UTF-8

Le codage HTML UTF-8 est installé avec le code suivant:

tête

Meta http-equiv = "Content-Type" "text / html; charset = utf-8" content = ˃

En PHP codage UTF-8 est réglé en utilisant la fonction header () au début du fichier après la mise en valeur de l'erreur de niveau de sortie:

˂ Php

error_reporting (-1);

header ( « Content-Type: text / html; charset = utf-8 « );

Pour se connecter à une base de données MySQL encodage UTF-8 est défini:

˂ Php

mysql_set_charset ( 'utf8');

L'encodage fichier CSS est UTF-8 caractères est spécifié comme suit:

@charset "utf-8";

Lorsque vous enregistrez les fichiers de tous types choisissent l'encodage UTF-8 sans BOM, sinon le site ne fonctionnera pas. Pour ce faire, en DreamWeave devez sélectionner l'option de menu « Modifications – Propriétés de la page – Titre / codage » pour changer l'encodage UTF-8. Suivi par rechargement de la page, retirez la coche de « signature Connect Unicode (BOM)» et appliquer les modifications. Si le texte sur une page ou dans une base de données a été introduit une autre forme de codage, il est nécessaire de réintégrer ou réencoder. Lorsque vous travaillez avec des expressions régulières, assurez-vous d'utiliser le modificateur u.

Vous pouvez également enregistrer le fichier dans le codage UTF-8 dans le « Bloc-notes » de Windows. Après avoir sélectionné l'option de menu « Fichier – Enregistrer sous … » pour installer la forme nécessaire de l'encodage et enregistrez le fichier en UTF-8.

Dans un éditeur de texte Notepad ++, si elle est définie autre que UTF-8, par l'intermédiaire de l'élément de menu « Convertir en UTF-8 sans BOM» changer le caractère et enregistrer en UTF-8.

il n'y a pas d'alternative

Dans le contexte de la mondialisation, où les frontières politiques et linguistiques sont effacées, les jeux de caractères qui ont des caractéristiques locales, sont peu utiles. Unicode est un jeu de caractères unique qui prend en charge toutes les localisations. Un UTF-8 – un exemple de la mise en œuvre d'Unicode, qui est:

  • Il prend en charge un large éventail d'outils, y compris la compatibilité avec le codage ASCII;
  • Il résiste aux données de distorsion;
  • simple et efficace dans le traitement;
  • est la plate-forme indépendante.

Avec l'avènement du débat UTF-8 sur ce que sous forme de jeu de codage ou de caractères est mieux, il n'a plus de sens.