Jak komputer przechowuje znaki?
Warto na początku przypomnieć, że komputer przechowuje wszystkie dane jako bity (zero lub jeden). I tak w dużej mierze działa kodowanie znaków – danemu znaku przypada jakaś liczba:
| Znak | Reprezentacja binarna |
|---|---|
| … | … |
| A | 01000001 |
| B | 01000010 |
| C | 01000011 |
| D | 01000100 |
| … | … |
Pierwszy standard kodowania – ASCII (17 czerwca 1963)
W 1963 roku powstał pierwszy standard kodowania American Standard Code for Information Interchange – ASCII. Początkowo wykorzystywał 7 bitów (127 możliwości), żeby później (pod nazwą Extended ASCII) być rozszerzonym do 8 bitów (256 możliwości). Niestety to rozszerzenie dalej nie pokryło wielu znaków (w tym części polskich liter dialektycznych).
Unicode (pierwsza wersja w 1991)
Nie jest to kodowanie a raczej standard mówiący za pomocą jakich liczb (code point) kodowane są znaki. Zawiera on ponad milion znaków, co obejmuje prehistoryczne, dzisiejsze i pozwala na dodanie nowych.
Kodowania oparte o standard Unicode
UTF-32
Jest to kodowanie pokrywające wszystkie znaki standardu Unicode. Niestety, ale do każdego znaku wykorzystywane są aż 32 bity (cztery bajty), co znacząco zwiększa rozmiar przesyłanych (lub utrwalanych) danych.
UTF-16
Jest to kodowanie o zmiennej długości elementów – używa od 16 do 32 bitów w zależności od potrzeb. Posiada specjalny znacznik, dzięki któremu jest w stanie określić czy to już koniec znaku czy też nie.
UTF-8
Podobnie jak UTF-16, jest to kodowanie o zmiennej długości elementów – w tym przypadku używa od 8 do 16 bitów w zależności od potrzeb. I także posiada specjalny znacznik, dzięki któremu jest w stanie określić czy to już koniec znaku czy też nie.
ANSI
ANSI nie jest kodowaniem, jest to raczej instytucja standaryzująca między innymi skład asfaltu (oczywiście zajmuje się też standaryzacją kodowania) 🙂 Lecz niekiedy można spotkać się z określeniem – kodowanie ANSI (na przykład w Notepad++). Najczęściej jest to po prostu odwołanie do standardowej dla systemu operacyjnego strony kodowej (standard code page on a system), czyli de facto kodowania.
Warto zajrzeć
1. https://kunststube.net/encoding/
2. https://stackoverflow.com/questions/701882/what-is-ansi-format
