Pourquoi il n'y a pas D'UTF-24? [dupliquer]

possibilité de dupliquer:

pourquoi L'UTF-32 existe-t-il alors que seulement 21 bits sont nécessaires pour encoder chaque caractère?

le point de code Unicode maximum est 0x10ff en UTF-32. L'UTF-32 contient 21 bits d'information et 11 bits Vierges superflus. Alors pourquoi n'y a-t-il pas D'encodage UTF-24 (C'est-à-dire UTF-32 avec le High byte supprimé) pour stocker chaque point de code en 3 octets plutôt que 4?

20
demandé sur Community 2012-04-13 19:32:28

1 réponses

Eh bien, la vérité est : UTF-24 a été suggéré en 2007 :

http://unicode.org/mail-arch/unicode-ml/y2007-m01/0057.html

mentionnés avantages et inconvénients d'être :

"UTF-24 
Advantages: 
 1. Fixed length code units. 
 2. Encoding format is easily detectable for any content, even if mislabeled. 
 3. Byte order can be reliably detected without the use of BOM, even for single-code-unit data. 
 4. If octets are dropped / inserted, decoder can resync at next valid code unit. 
 5. Practical for both internal processing and storage / interchange. 
 6. Conversion to code point scalar values is more trivial then for UTF-16 surrogate pairs 
    and UTF-7/8 multibyte sequences. 
 7. 7-bit transparent version can be easily derived. 
 8. Most compact for texts in archaic scripts. 
Disadvantages: 
 1. Takes more space then UTF-8/16, except for texts in archaic scripts. 
 2. Comparing to UTF-32, extra bitwise operations required to convert to code point scalar values. 
 3. Incompatible with many legacy text-processing tools and protocols. "

comme L'a souligné David Starner dans http://www.mail-archive.com/unicode@unicode.org/msg16011.html :

pourquoi? UTF-24 will presque invariablement être plus grand que UTF-16, à moins que vous parle D'un document en vieux italique ou Gothique. L'alphanumérique mathématique les caractères seront presque toujours combinés avec assez D'ASCII pour faire UTF-8 une victoire, et si pas assez de BMP de caractères pour faire UTF-16 une victoire. Les ordinateurs modernes ne traitent pas bien les morceaux de 24 bits; en mémoire, ils prenez 32 cents la pièce, sauf si vous les avez déclarés emballés, et puis ils seraient plus lents que UTF-16 ou UTF-32. Et si vous stockez pour disque, vous pouvez aussi bien utiliser BOCU ou SCSU (vous allez déjà non standard), ou utiliser la compression standard avec UTF-8, UTF-16, BOCU ou SCSU. SCSU ou BOCU comprimé devrait prendre la moitié de L'espace de L'UTF-24, si c'.

vous pouvez également vérifier le Poteau de débordement de piles suivant:

pourquoi UTF-32 existe-t-il alors que seulement 21 bits sont nécessaires pour encoder chaque caractère?

20
répondu Skippy Fastol 2017-05-23 10:31:00