Kodowanie tekstu

Jak wiadomo bajt jest liczbą z zakresu od 0 do 255. Liczba ta może być interpretowana jako litera. Jak już wspominałem wcześniej w informatyce tworzy się swego rodzaju kody podstawieniowe. Kody te są swego rodzaju standardem, w którym uznaje się, że dana liczba reprezentowana przez bajt to A a inna liczba  to B.

Najbardziej znanym i podstawowym standardem jest ASCII (American Standard Code for Information Interchange). Oto tabela podstawieniowa ASCII:

ASCII_table

Teraz łatwo zrozumieć dlaczego klawiatury są takie tanie – ich jedyną funkcją jest wysłanie do komputera liczby odpowiadającej przyciśniętemu przyciskowi. Jeżeli przyciśniemy A to wysłany zostanie 65, a jeżeli B to 66. Dla najbardziej zatwardziałych geeków powinno produkować się klawiatury z 256 przyciskami od 0x00 do 0xFF i tak powinno się pisać.

Warto zauważyć, że tylko kody od 0 do 127 są w użyciu, pozostawiając miejsce dla dodatkowych 128 znaków.

Kody ASCII dawały sobie świetnie radę dopóki nie zbuntowały się narody posiadające znaki akcentowane. Polskich znaków ą,ę,ź,ż itp  nie da się zapisać w ASCII. Jak pamiętamy kod ASCII pozostawia nam 128 nieużytych znaków od 128 do 255 (higher ASCII) i to właśnie one zostały użyte do stworzenia kodów z akcentami narodowymi. Ta metoda sprawia, że dodatkowe standardy są wstecznie kompatybilne z ASCII. Jeżeli na przykład użyjemy złego kodowania na naszej stronie internetowej, wszystkie standardowe znaki wyświetlą się poprawnie a tylko polskie znaki zamienią się w krzaki.

Istnieją dziesiątki metod kodowania polskiego tekstu, najbardziej znane to:

  • ISO-8859-2 – stosowany na stronach internetowych,
  • Windows CP-1250 – używany przez Windows.

Szczegóły dotyczące kodowania możemy znaleźć na Wikipedii.

Cały czas mówimy o kodowaniu 8-bitowym. Dawało ono sobie świetnie radę dopóki nie zbuntowały się z kolei narody posiadające pismo składające się z większej ilości znaków, na przykład Chińczycy lub starożytni Egipcjanie. Nie da się pisma chińskiego zmieścić w 1 bajcie. Stworzono więc kodowanie Unicode.

Istnieją dwa standardy Unicode – UTF i UCS. Są one ze sobą w większości kompatybilne. W praktyce spotkamy się głównie ze standardami UTF, a głównie z UTF-8 i UTF-16.

UTF-8 używa od 1 do 4 bajtów. Bajty zawierają bity kontrolne, dlatego łatwo jest odróżnić, który bit jest pierwszy i ile bajtów koduje dany znak. W wersji 1-bajtowej UTF-8 jest w pełni kompatybilny z ASCII. Z punktu widzenia digital forensics jest to idealne rozwiązanie. W większości przypadków teksty UTF-8 można przeglądać w oprogramowaniu do informatyki śledczej, bez zmiany kodowania. Znaki narodowe będą wymagały dwóch bajtów  a pisma o dużej ilości znaków nawet trzech lub czterech.

UTF-16 używa z kolei od 2 do 4 bajtów. Da się w nim zakodować maksymalnie 1,112,064 znaków. Używany jest on przez system Windows do kodowania tekstu, więc spotkamy się z nim często.

Sposób kodowania tekstu ma w informatyce śledczej kluczowe znaczenie. Jest to ważne przy przeglądzie treści dokumentów, ale przede wszystkim w trakcie wyszukiwania słów kluczowych. Słowo kluczowe “gżegżółka”, wyszukiwane bezpośrednio na dysku będzie musiało być wyszukane  w kilku wersjach kodowania. Wszystkie szanujące się programy digital forensics zaoferują taką opcję. Przy okazji wspomnę, że wyszukiwanie w indeksie rządzi się odrębnymi prawami i kodowanie tekstu jest ujednolicone w indeksie.

Na zakończenie dodam, że istnieją setki a może nawet tysiące różnych kodowań tekstu. Przedstawiłem tylko te najważniejsze i najczęściej spotykane. Te najciekawsze, na przykład języki pisane z prawej do lewej mogą łatwo przyprawić o ból głowy.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *