Lo standard unicode ha abbastanza punti di codice in esso che sono necessari 4 byte per memorizzarli tutti. Questo è ciò che fa la codifica UTF-32. Tuttavia la codifica UTF-8 in qualche modo li comprime in spazi molto più piccoli usando qualcosa chiamata "codifica a larghezza variabile".Come funziona la codifica larghezza variabile UTF-8?
In effetti, riesce a rappresentare i primi 127 caratteri di US-ASCII in un solo byte che sembra esattamente ASCII reale, quindi è possibile interpretare molto testo ASCII come se fosse UTF-8 senza fare nulla ad esso . Trucco pulito. Quindi, 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 qualche volta. In più forse qualcuno può correggermi se ho qualcosa di sbagliato.
Unicode diritto * non * richiede 32 bit per codificare tutti i suoi punti di codice. Una volta hanno rivendicato molti possibili punti di codice, ma dopo che l'UTF-8 è decollato, si sono intenzionalmente limitati a 21 bit, così che UTF-8 non supererà mai i 4 byte per carattere. Unicode richiede attualmente solo 17 bit per contenere tutti i possibili punti di codice. Senza questa limitazione, UTF-8 poteva andare a 6 byte per carattere. –
@Warren: per lo più preciso, ma Unicode è un codice a 21 bit (da U + 0000 a U + 10FFFF). –
@Warren: UTF-8 a 4 byte limitato potrebbe supportare fino a U + 1FFFFF. La restrizione a U + 10FFFF è stata fatta per il gusto di UTF-16. – dan04