294 votes

Combien d'octets prend un caractère Unicode

Je suis un peu confus au sujet de codages. Autant que je sache vieux caractères ASCII a pris un octet par caractère. Combien d'octets n'est un caractère Unicode?

Je suppose que l'un caractère Unicode peut contenir tous les caractères possibles à partir de n'importe quelle langue - ai-je raison? Donc, combien d'octets-t-il besoin par caractère?

Et ce qui ne l'UTF-7, UTF-6, UTF-16 etc veux dire? Sont-ils une sorte versions Unicode?

J'ai lu l' article de Wikipedia sur Unicode , mais il est assez difficile pour moi. Je suis impatient de voir une réponse simple.

179voto

Logan Capaldo Points 22145

Vous ne voyez pas de réponse simple, car il n'existe pas.

Tout d'abord, Unicode ne contient pas "tous les caractères de toutes les langues", même si c'est sûr qu'il ne essayer.

Unicode est une cartographie, il définit codepoints et un codepoint est un nombre, associé généralement à un personnage. Je dis généralement car il y a des concepts comme la combinaison de caractères. Vous connaissez peut-être des choses comme les accents et les trémas. Ceux-ci peuvent être utilisées avec un autre caractère, comme l'un ou d'un u pour créer une nouvelle logique de caractère. Un personnage ne peut donc être composé de 1 ou plusieurs codepoints.

Pour être utile dans les systèmes informatiques, nous devons choisir une représentation de cette information. Ceux sont les différents encodages unicode, utf-8, utf-16le, utf-32 etc. Ils se distinguent principalement par la taille de leur codeunits. UTF-32 est le plus simple de l'encodage, il a un codeunit qui est 32bits, ce qui signifie une personne codepoint s'adapte confortablement dans un codeunit. Les autres codages aura des situations où un codepoint aura besoin de plusieurs codeunits, ou que particulier codepoint ne peuvent pas être représentés dans le codage (c'est un problème par exemple avec UCS-2).

En raison de la souplesse de la combinaison de caractères, même au sein d'un codage donnée le nombre d'octets par caractère peut varier en fonction du caractère et de la normalisation de la forme, qui est un protocole pour traiter avec des personnages qui ont plus d'une représentation (vous pouvez dire "avec un accent" qui est de 2 codepoints, dont l'un est une combinaison de char ou "accentués" qui est un codepoint).

71voto

Mat Points 104488

Jetez un coup d'œil à cette introduction à Unicode: le minimum absolu que tout développeur de logiciels doit absolument connaître sur les jeux de caractères et d'Unicode de Joel Spolsky. C'est une bonne lecture pour commencer.

35voto

Zimbabao Points 5622

Simplement, en parlant Unicode est une norme qui a attribué un numéro (appelé point de code) pour tous les caractères du monde (encore en cours).

Maintenant, vous avez besoin de représenter ce code points à l'aide d'octets, c'est appelé character encoding. UTF-8, UTF-16, UTF-6 sont des moyens de représentation de ces personnages.

UTF-8 est multi-octets codage de caractères. Les personnages peuvent avoir de 1 à 6 octets (certains peut-être pas nécessaire en ce moment).

UTF-32 chaque personnages ont 4 octets d'un des personnages.

UTF-16 utilise 16 bits pour chaque caractère et il ne représente qu'une partie de l'Unicode des caractères appelée BMP (à toutes fins pratiques, ses assez). Java utilise ce codage dans ses cordes.

7voto

BalusC Points 498232

Qui dépend de l'encodage Unicode utilisé. UTF-8, ce qui est le plus largement utilisé, est un multi-octets codage qui utilise entre 1 et 4 octets par caractère. En général, les personnages de l'ancien ASCII gamme prend 1 octet. Personnages de l'ancien ISO-8859 - delà ASCII prend 2 octets. Les caractères Non latins (CJK, arabe, etc) qui sont dans le BMP (Basic Multilingual Panneau) prend 3 octets. Les caractères au-delà de la BMP prend 4 octets.

Il y a d'autres encodages Unicode comme UTF-16 et UTF-32. UTF-16 utilise pour la vieille ASCII et ISO-8859 plages de 2 octets et pour rien au-delà de 4 octets. UTF-32 utilise 4 octets pour tous les personnages.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X