Domanda

Lo standard Unicode ha abbastanza punti di codice in esso che è necessario 4 byte per memorizzare tutti. Questo è ciò che la codifica UTF-32 fa. Eppure la codifica UTF-8 comprime in qualche modo questi in spazi molto più piccoli utilizzando qualcosa chiamato "larghezza variabile codifica".

In realtà, riesce a rappresentare i primi 127 caratteri di US-ASCII in un solo byte, che appare esattamente come vero e proprio ASCII, in modo da poter interpretare un sacco di testo ASCII come se fosse UTF-8 senza fare nulla per essa. trucco accurato. Così come funziona?

ho intenzione di chiedere e rispondere alla mia domanda qui perché ho appena fatto un po 'di lettura per capirlo e ho pensato che potrebbe salvare qualcun altro po' di tempo. Inoltre forse qualcuno mi può correggere se ho un po 'di male.

È stato utile?

Soluzione

Ogni byte inizia con un paio di pezzi che ti dicono se si tratta di un codice a punto singolo byte, un punto di codice multi-byte, o la continuazione di un punto di codice multi-byte. In questo modo:

0xxx xxxx    A single-byte US-ASCII code (from the first 127 characters)

I multi-byte code-punti ciascuno inizia con un paio di bit che in sostanza dicono "hey, è necessario leggere anche il prossimo byte (o due, o tre) per capire quello che sono." Essi sono:

110x xxxx    One more byte follows
1110 xxxx    Two more bytes follow
1111 0xxx    Three more bytes follow

Infine, i byte che seguono i codici di avviamento tutto simile a questa:

10xx xxxx    A continuation of one of the multi-byte characters

Dal momento che si può dire che tipo di byte che stai guardando dai primi pochi bit, quindi anche se qualcosa viene storpiato da qualche parte, non si perde l'intera sequenza.

Altri suggerimenti

RFC3629 - UTF-8, un formato di trasformazione della norma ISO 10646 è l'autorità finale qui e ha tutte le spiegazioni.

In breve, più bit in ciascun byte della sequenza 1-a-4-byte UTF-8-encoded che rappresenta un singolo carattere sono usati per indicare se si tratta di un byte finale, un byte iniziale, in caso affermativo, quante byte seguono. I restanti bit contengono il payload.

  

UTF-8 era un altro sistema per la memorizzazione   la stringa di punti di codice Unicode,   quei numeri magici U +, in memoria   utilizzando 8 bit byte. In UTF-8, ogni   punto codice 0-127 è memorizzato in un   singolo byte. Solo punti di codice 128 e   sopra sono memorizzati utilizzando 2, 3, infatti,   fino a 6 byte.

L'Assoluto minimo Ogni Software Developer assolutamente, positivamente deve sapere su Unicode e set di caratteri ( Non ci sono scuse!)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top