TAAT Technologie Cyfrowe

Polskie znaki na stronach internetowych

Co to jest kodowanie znaków?

Definicja kodowania zgodnie ze Słownikiem Języka Polskiego PWN jest następująca:

kodowanie
przyporządkowanie wiadomościom (wg reguły zw. kodem) sygnałów w postaci ciągów sygnałów elementarnych;

Kodowanie znaków (mapowanie znaków) to przyporządkowanie znakom pisma odpowiedników liczbowych, ciągów sygnałów binarnych.

Zasada działania kodowania polega na tabelarycznym zestawieniu:

Kodowanie a zestaw znaków — różnica

Kodowanie, (ang. encoding) to sposób konwersji znaków na kody liczbowe.

Zestaw znaków (ang. charset) podzbiór znaków, grupa elementów graficznych, znaki których chcemy użyć, zestawione w znormalizowanej tabeli.

Kodowanie i zestaw znaków, to dwa różne pojęcia. Zdarza się tak, że różne zestawy znaków, używają tego samego kodowania. Aby uzyskać pożądane znaki, czasami można użyć różnych kodowań, dlatego, że dany podzbiór znaków, może być prawidłowo obsługiwany również w innych kodowaniach.

Określenia „kodowanie” i „zestaw znaków” są często utożsamiane, ze względu na to, iż z reguły zmiana kodowania jest ściśle związana z użytym zestawem znaków, a ich nazwy są bardzo podobne.

W zależności od języka i potrzebnej ilości znaków powstało wiele standardów kodowania. Każdy język ma specyficzne dla siebie znaki graficzne, umieszczone w specyficznym dla siebie kodowaniu.

Jakie kodowanie wybrać?

Każde takie zestawienie, zebrane jest w jeden standard. (np. ISO-8859-1, ISO-8859-2, US-ASCII, UTF-16). Określone są w nim dostępne znaki, ich wygląd, odpowiadające wartości liczbowe a także zasady ich przydzielania.

Najprostszym zestawem znaków jest ASCII. Przeczytaj artykuł na temat ASCII z Wikipedii. Jak widać, wszystkim podstawowym znakom (cyfrom, małym i dużym literom a także znakom specjalnym jak enter lub backspace) zostały przyporządkowane odpowiednie wartości liczbowe.

Niestety, wśród znaków ASCII nie znajdują się takie znaki jak polskie ogonki (ą, ę, ś...), rosyjskiej cyrylicy (Международную) lub znaki z języka irańskiego (هنرمنداني) czy japońskiego (日本研究). Dlatego zostały stworzone osobne tablice znaków, zawierające grupy znaków specyficzne dla danej grupy języków.

Kodowanie zawsze działa w dwie strony:

Problemy z nieprawidłowym wyświetlaniem znaków, biorą się zwykle z tego, że w różnych standardach kodowania niektórym znakom są przyporządkowane te same wartości liczbowe. Dodatkowo, różne tablice mają różną długość, więc jeśli kodowanie A zawiera 100 znaków, z a kodowanie B 200 znaków, to znaki o kodach powyżej 100 zapisane w kodowaniu B nie mogą zostać wyświetlone prawidłowo w kodowaniu A. Te brakujące znaki są zwykle zastępowane znakiem pytajnika (?).

Co potrzeba, aby prawidłowo kodować znaki?

Do prawidłowego kodowania znaków potrzebny jest edytor tekstu, pozwalający na wybór kodowania znaków. Najlepsze są edytory pozwalające na używanie pełnego zestawu znaków dostępnych we wszystkich językach (UNICODE). Takim programem jest na przykład jEdit. Jeśli nie wiesz jak to zrobić przy jego pomocy, przeczytaj artykuł Jak zmienić kodowanie w jEdicie?

Używając takiego programu, nie musimy się martwić niczym, poza ustawieniem pożądanego kodowania w opcjach programu i ewentualnej zmianie tych ustawień, w przypadku otwierania pliku w innym kodowaniu.

Przykładem złego programu jest Notatnik, w który jest standardowo wyposażony Windows. Używa on wyłącznie kodowania Windows-1250, które jest prawidłowo rozpoznawane głównie przez Widnows.

Prawidłowe kodowanie znaków na stronach internetowych

Dla języka polskiego, prawidłowymi zestawami znaków są iso-8859-2 (ograniczony) lub utf-8 (pełny). Możesz wybrać jeden z dwóch. Oba mają wady i zalety. Wybór należy do Ciebie. Kodowanie UTF-8 jest bardzo rozbudowane i pozwala na użycie znaków w bardzo wielu językach. Kodowanie ISO-8859-2 jest bardziej popularne i zajmuje mniej pamięci. Więcej informacji o różnicach, możesz znaleźć w artykule: Poprawna interpunkcja na stronach internetowych

Aby prawidłowo wyświetlić znaki na stronie internetowej należy dokonać dwóch rzeczy:

Pkt. 1. realizuje się przez ustawienie w opcjach programu kodowania, którego chcemy użyć, np. UTF-8

Pkt. 2. w praktyce, najczęściej realizuje się, poprzez dodanie do sekcji <head> tagu <meta> o odpowiedniej zawartości, np:

<meta http-equiv="content-type" content="text/html; charset=utf-8">

TODO: nagłówki serwera, content negotiation

Więcej informacji