Chiarificazione Unicode

0

Perché la lunghezza di alcuni caratteri, ad es. il seguente 'ᨒ' 3 quando dovrebbe essere 2

ᨒ U + 1a12

1a12 significa 6674

2 ^ 16 è 65536 quindi 6674 dovrebbe richiedere solo 2 byte e non tre

    
posta Imran Omar Bukhsh 29.09.2011 - 17:19
fonte

2 risposte

5

Il codice 6674 richiede almeno 13 bit binari da codificare. UTF-8 richiede 5 bit di prefisso per indicare che un valore Unicode codificato a 2 byte non è solo due normali caratteri ASCII a 7 bit. 13 + 5 = 18, che è superiore a 16 bit o 2 byte. Quindi ci vogliono 3 byte per codificare (aggiungendo altri 2 bit prefissi Unicode).

    
risposta data 29.09.2011 - 21:07
fonte
5

Ci sono 3 codifiche di unicode: UTF-8, UTF-16, UTF-32

In UTF-8 ci vogliono 3 byte: 0xE1 0xA8 0x92 come UTF-8 ha caratteri di lunghezza variabile.

UTF-16 richiederebbe 2 byte: 0x1A12 come UTF-16 ha caratteri di lunghezza fissa

link
link

Lunghezza carattere UTF-8 dalla pagina di Wikipedia:

Last code point Byte 1      Byte 2      Byte 3      Byte 4      Byte 5      Byte 6
 7  U+007F      0xxxxxxx
11  U+07FF      110xxxxx    10xxxxxx
16  U+FFFF      1110xxxx    10xxxxxx    10xxxxxx
21  U+1FFFFF    11110xxx    10xxxxxx    10xxxxxx    10xxxxxx
26  U+3FFFFFF   111110xx    10xxxxxx    10xxxxxx    10xxxxxx    10xxxxxx
31  U+7FFFFFFF  1111110x    10xxxxxx    10xxxxxx    10xxxxxx    10xxxxxx    10xxxxxx
    
risposta data 29.09.2011 - 17:21
fonte

Leggi altre domande sui tag