Wróć do: Teoria
podstawowy kodowanie znakówASCIIUnicodematura podstawowa z informatyki

ASCII, Unicode i UTF-8

Jak komputer zapisuje litery – kod ASCII, standard Unicode i kodowanie UTF-8 o zmiennej długości, plus polskie znaki i „krzaki".

01

Opis

Komputer przechowuje wyłącznie liczby, więc każdej literze trzeba przypisać numer. Najstarszy powszechny standard to ASCII, który używa 7 bitów i opisuje 128 znaków: litery alfabetu angielskiego, cyfry, znaki interpunkcyjne i znaki sterujące. Polskich liter tam nie ma.

Unicode to odpowiedź na ten problem: jeden wielki katalog, w którym numer dostaje znak z każdego pisma świata – łacińskiego, cyrylicy, chińskiego, a także emoji. Unicode mówi tylko, jaki numer ma znak, nie mówi, jak go zapisać w pamięci.

Za sposób zapisu odpowiada kodowanie, najczęściej UTF-8. Jest ono zmiennej długości: znaki ASCII zajmują w nim jeden bajt, a znaki spoza tego zakresu – dwa, trzy lub cztery. Dzięki temu tekst angielski nie puchnie, a jednocześnie da się zapisać dowolny alfabet.

02

Jak to działa

Warto znać kilka punktów odniesienia w ASCII, bo pozwalają liczyć w pamięci:

  • wielkie A ma kod 65, więc B to 66, C to 67 i tak dalej
  • małe a ma kod 97, czyli dokładnie o 32 więcej niż A
  • cyfra 0 ma kod 48, więc cyfrę zamienia się na liczbę, odejmując 48
  • spacja ma kod 32

Różnica 32 między wielką a małą literą to dokładnie jeden bit, dlatego zamiana wielkości liter jest dla komputera operacją banalną.

Polskie znaki w UTF-8 zajmują dwa bajty. Dlatego napis „żółw" ma cztery znaki, ale siedem bajtów – i dlatego liczba znaków nie zawsze równa się liczbie bajtów.

Na maturze

Najczęstsza forma to obliczenie: ile bajtów zajmie dany tekst, albo jaki kod ma konkretna litera. Zdarza się też pytanie o różnicę między Unicode a UTF-8 – tu punktowana jest świadomość, że jedno to numeracja, a drugie sposób zapisu.

Praktyczna konsekwencja, o którą też pytają: „krzaki" zamiast polskich liter biorą się z otwarcia pliku w innym kodowaniu, niż został zapisany.

04

Zapamiętaj

  • ASCII to 7 bitów i 128 znaków, bez polskich liter.
  • Unicode nadaje numery, UTF-8 decyduje, jak te numery zapisać w bajtach.
  • W UTF-8 znak ASCII zajmuje 1 bajt, a polska litera 2 bajty.
  • A to 65, a to 97, 0 to 48 – różnica między wielką a małą literą wynosi 32.
05

Najczęściej zadawane pytania

Dlaczego zamiast polskich liter pojawiają się krzaki?

Bo plik zapisano w jednym kodowaniu, a otwarto w innym. Bajty są te same, ale program interpretuje je według złej tabeli. Rozwiązaniem jest wskazanie właściwego kodowania przy otwieraniu.

Ile bajtów zajmie napis „Kraków" w UTF-8?

Sześć znaków, z czego pięć to zwykłe litery po jednym bajcie, a ó zajmuje dwa. Razem siedem bajtów.

Czym różni się UTF-8 od UTF-16?

Sposobem podziału na bajty. UTF-8 zaczyna od jednego bajta i rozszerza się w razie potrzeby, UTF-16 używa minimum dwóch. Dla tekstów łacińskich UTF-8 jest oszczędniejszy i dlatego zdominował internet.

Powiązane zagadnienia