Tekst su brojevi
Računar čuva tekst kao brojeve. Svaki znak ima kodnu tačku (slovo A je 65, a je 97, 0 je 48), a kodiranje odlučuje kako taj broj postaje bajtovi. ASCII pokriva 128 znakova sa po jednim bajtom; Unicode pokriva više od milion, a UTF-8 je kodiranje koje ih zapisuje kao jedan do četiri bajta, pri čemu ASCII ostaje nepromenjen.
Tako je Hi 72 i 105, što je binarno 01001000 i 01101001, a heks 48 69. Slovo é je kodna tačka 233, ali se čuva kao dva bajta, C3 A9; znak za štikliranje ✓ su tri bajta, E2 9C 93; emodži je četiri.
Kako UTF-8 pakuje kodnu tačku
| Opseg kodnih tačaka | Bajtova | Raspored bitova |
|---|---|---|
| U+0000 – U+007F | 1 | 0xxxxxxx |
| U+0080 – U+07FF | 2 | 110xxxxx 10xxxxxx |
| U+0800 – U+FFFF | 3 | 1110xxxx 10xxxxxx 10xxxxxx |
| U+10000 – U+10FFFF | 4 | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx |
Vodeći bitovi prvog bajta govore koliko je sekvenca dugačka, a svaki nastavljajući bajt počinje sa 10. Taj dizajn omogućava dekoderu da se ponovo sinhronizuje posle greške i zato UTF-8 tekst možete da pretražujete bajt po bajt.
ASCII referenca
Štampljivi ASCII ide od 32 (razmak) do 126 (~). Cifre su 48–57, velika slova 65–90, mala slova 97–122. Razlika između velikih i malih slova je tačno bit 5 (vrednost 32), zbog čega c | 0x20 pretvara ASCII slovo u malo. Kodovi 0–31 su kontrolni znakovi: 9 je tab, 10 je line feed, 13 je carriage return, 27 je escape.
Pitanja
Kako da ručno pretvorim tekst u binarno?
Nađite ASCII kod svakog znaka (A = 65), pa taj decimalni broj pretvorite u binarni i dopunite ga do 8 bitova: 65 = 01000001. Ne-ASCII znakovi prvo moraju da se pretvore u UTF-8 bajtove.
Zašto jedan znak postaje više od jednog bajta?
Zato što UTF-8 koristi 2, 3 ili 4 bajta za sve izvan ASCII-ja. é je C3 A9, 日 je E6 97 A5, 😀 je F0 9F 98 80. Tabela ispod alata to prikazuje po znaku.
Koja je binarna vrednost slova A?
01000001 (decimalno 65, heks 41). Malo a je 01100001 (97, heks 61): isto, sa postavljenim bitom 5.
Zašto binarno-u-tekst daje grešku?
Svaka grupa mora da bude bajt (8 binarnih cifara, ili vrednost 0–255), a bajtovi moraju da čine ispravan UTF-8. Usamljeni bajt iznad 127, ili nastavljajući bajt bez vodećeg, nije ispravan tekst.
Da li je ovo isto što i Base64?
Ne. Ovo prikazuje stvarne bajtove teksta u čitljivoj bazi. Base64 je drugačija, gušća šema za prenos proizvoljnih bajtova kao teksta. Pogledajte Base64 alat.