Programmering: hur du identifierar och läsa UTF-8-tecken i text snören... (9 / 16 steg)
Koder större än 127 kodas i flera byte.
Å andra sidan, om våra byte är negativ, innebär detta att det är förmodligen en UTF-8-kodade tecken vars kod är större än 127.
Detta innebär också att det bör följas av minst en mer negativ byte.
UTF-8 är utformad för att koda alla Unicode-tecken använder mindre utrymme som möjligt.
Om det är möjligt att koda ett unicodetecken inom bara 2 byte, kommer vi inte använda mer än de 2 byte. Vi kommer använda 4 byte endast om absolut krävs.
Vi behöver då en metod att gissa hur många byte är kodade ett tecken.
Vi kan extrahera informationen från den första negativa byten, genom att räkna hur många av sista bitarna av våra byte anges till en:
110xxxxx: 2 sista bitar satt till 1, betyder vår karaktär är kodad i 2 byte.
Vi måste läsa 1 mer negativa byte.
1110xxxx: 3 sista bitar satt till 1, betyder vår karaktär är kodad i 3 byte.
Vi måste läsa 2 mer negativa byte.
11110xxx: 4 sista bitar satt till 1, betyder vår karaktär är kodad i 4 byte.
Vi måste läsa 3 fler negativa byte.
Den följande extra negativ byte alla har de 8 bit med värdet 1 (minustecknet) och den 7: e biten anges till 0: 10yyyyyy
Om den följande extra byte är positiva eller har deras 7th bit med värdet 1, har betyder det att UTF-8-kodade tecken fel format. Vår ansökan absolut måste upptäcka felaktig kodning.
Koder från 128 till 2047 kodas i 2 byte.
(från 0x0100 till 0x7FFF)
Tecken kodas i två byte är sådär:
110XXXXX, 10yyyyyy
För att avkoda den, vi måste helt enkelt gruppera våra 5 x bitar med våra 6 y bits: xxxxxyyyyyy