Standardowy kod Unicode zawiera wystarczającą liczbę punktów kodowych, które wymagają 4 bajtów do zapisania wszystkich. To właśnie robi kodowanie UTF-32. Jednak kodowanie UTF-8 w jakiś sposób wyciska je na znacznie mniejsze przestrzenie, używając czegoś, co nazywa się "kodowaniem o zmiennej szerokości".Jak działa kodowanie o zmiennej szerokości UTF-8?
Udaje mu się przedstawić pierwsze 127 znaków US-ASCII w jednym bajcie, który wygląda dokładnie tak, jak w prawdziwym ASCII, dzięki czemu można interpretować wiele tekstów ASCII tak, jakby były w formacie UTF-8, nie robiąc przy tym niczego . Sztuczka. Jak to działa?
Zamierzam zapytać i odpowiedzieć na moje własne pytanie, ponieważ po prostu trochę czytałem, aby to zrozumieć i pomyślałem, że może to kiedyś uratować kogoś innego. Plus może ktoś może mnie poprawić, jeśli coś jest nie tak.
Prosty kod Unicode * nie * wymaga 32 bitów do zakodowania wszystkich punktów kodowych. Kiedyś zgłosili roszczenie do wielu możliwych punktów kodowych, ale po uruchomieniu UTF-8 celowo ograniczyli się do 21 bitów, więc UTF-8 nigdy nie przekroczy 4 bajtów na znak. Unicode wymaga obecnie tylko 17 bitów do przechowywania wszystkich możliwych punktów kodowych. Bez tego ograniczenia, UTF-8 mógł przejść do 6 bajtów na znak. –
@Warren: w większości dokładne, ale Unicode to 21-bitowy kod (U + 0000 do U + 10FFFF). –
@Warren: Limit 4-bajtowy UTF-8 mógł obsłużyć do U + 1FFFFF. Ograniczenie do U + 10FFFF zostało wprowadzone ze względu na UTF-16. – dan04