Czym są kodowania znaków, takie jak ANSI i Unicode, i czym się różnią?

Opublikowany: 2022-01-29

ASCII, UTF-8, ISO-8859… Być może widziałeś te dziwne przydomki unoszące się wokół, ale co one właściwie oznaczają? Czytaj dalej, ponieważ wyjaśniamy, czym jest kodowanie znaków i jak te akronimy odnoszą się do zwykłego tekstu, który widzimy na ekranie.

Podstawowe bloki konstrukcyjne

Kiedy mówimy o języku pisanym, mówimy o literach będących cegiełkami słów, które następnie tworzą zdania, akapity i tak dalej. Litery to symbole reprezentujące dźwięki. Kiedy mówisz o języku, mówisz o grupach dźwięków, które łączą się, aby stworzyć jakieś znaczenie. Każdy system językowy ma złożony zestaw reguł i definicji, które rządzą tymi znaczeniami. Jeśli masz słowo, jest ono bezużyteczne, chyba że wiesz, z jakiego języka pochodzi i używasz go z innymi, którzy mówią tym językiem.

(Porównanie skryptów Grantha, Tulu i malajalam, obraz z Wikipedii)

W świecie komputerów używamy terminu „postać”. Postać jest rodzajem abstrakcyjnego pojęcia, definiowanego przez określone parametry, ale jest podstawową jednostką znaczeniową. Łacińskie „A” to nie to samo co greckie „alfa” czy arabskie „alif”, ponieważ mają różne konteksty – pochodzą z różnych języków i mają nieco inną wymowę – więc możemy powiedzieć, że są to różne znaki. Wizualna reprezentacja postaci nazywana jest „glifem”, a różne zestawy glifów nazywane są czcionkami. Grupy postaci należą do „zestawu” lub „repertuaru”.

Kiedy wpisujesz akapit i zmieniasz czcionkę, nie zmieniasz wartości fonetycznych liter, zmieniasz ich wygląd. To tylko kosmetyk (ale nie bez znaczenia!). Niektóre języki, takie jak starożytny egipski i chiński, mają ideogramy; reprezentują one całe idee zamiast dźwięków, a ich wymowa może zmieniać się w czasie i odległości. Jeśli zamienisz jedną postać na inną, podmieniasz pomysł. To coś więcej niż tylko zmiana liter, to zmiana ideogramu.

Kodowanie znaków

(Obraz z Wikipedii)

Kiedy piszesz coś na klawiaturze lub ładujesz plik, skąd komputer wie, co ma wyświetlić? Po to jest kodowanie znaków. Tekst na komputerze nie jest w rzeczywistości literami, jest to seria sparowanych wartości alfanumerycznych. Kodowanie znaków działa jak klucz, dla którego wartości odpowiadają jakim znakom, podobnie jak ortografia dyktuje, które dźwięki odpowiadają jakim literom. Kod Morse'a to rodzaj kodowania znaków. Wyjaśnia, w jaki sposób znaki reprezentują grupy długich i krótkich jednostek, takich jak sygnały dźwiękowe. W alfabecie Morse'a znaki to tylko angielskie litery, cyfry i kropki. Istnieje wiele komputerowych kodowań znaków, które przekładają się na litery, cyfry, znaki akcentujące, znaki interpunkcyjne, symbole międzynarodowe i tak dalej.

Reklama

Często w tym temacie używany jest również termin „strony kodowe”. Są to zasadniczo kodowania znaków używane przez określone firmy, często z niewielkimi modyfikacjami. Na przykład strona kodowa Windows 1252 (wcześniej znana jako ANSI 1252) jest zmodyfikowaną formą ISO-8859-1. Są one najczęściej używane jako system wewnętrzny w odniesieniu do standardowych i zmodyfikowanych kodowań znaków, które są specyficzne dla tych samych systemów. Na początku kodowanie znaków nie było tak ważne, ponieważ komputery nie komunikowały się ze sobą. Wraz z rosnącym znaczeniem Internetu i powszechnym zjawiskiem sieciowym, staje się coraz ważniejszy w naszym codziennym życiu, nawet nie zdając sobie z tego sprawy.

Wiele różnych typów

special characters

(Zdjęcie z Sarah Sosiak)

Istnieje wiele różnych kodowań znaków i istnieje wiele powodów. Wybór kodowania znaków zależy od Twoich potrzeb. Jeśli komunikujesz się po rosyjsku, sensowne jest użycie kodowania znaków, które dobrze obsługuje cyrylicę. Jeśli komunikujesz się po koreańsku, będziesz chciał czegoś, co dobrze reprezentuje Hangul i Hanja. Jeśli jesteś matematykiem, potrzebujesz czegoś, co ma dobrze reprezentowane wszystkie symbole naukowe i matematyczne, a także glify greckie i łacińskie. Jeśli jesteś dowcipnisiem, może przyda Ci się tekst do góry nogami. A jeśli chcesz, aby wszystkie te typy dokumentów były oglądane przez dowolną osobę, potrzebujesz kodowania, które jest dość powszechne i łatwo dostępne.

Rzućmy okiem na niektóre z bardziej powszechnych.

(Fragment tabeli ASCII, obraz z asciitable.com)

  • ASCII – American Standard Code for Information Interchange to jedno ze starszych kodowań znaków. Został pierwotnie opracowany w oparciu o kody telegraficzne i ewoluował z biegiem czasu, aby zawierać więcej symboli i niektóre przestarzałe niedrukowane znaki kontrolne. Jest to prawdopodobnie tak proste, jak to tylko możliwe, jeśli chodzi o nowoczesne systemy, ponieważ ogranicza się do alfabetu łacińskiego bez znaków akcentowanych. Jego 7-bitowe kodowanie pozwala na użycie tylko 128 znaków, dlatego na całym świecie istnieje kilka nieoficjalnych wariantów.
  • ISO-8859 – Najczęściej stosowaną grupą kodowań znaków Międzynarodowej Organizacji Normalizacyjnej jest numer 8859. Każde konkretne kodowanie jest oznaczone numerem, często poprzedzonym opisowym monikerem, np. ISO-8859-3 (Latin-3), ISO- 8859-6 (łac./arab.). Jest to nadzbiór ASCII, co oznacza, że ​​pierwsze 128 wartości w kodowaniu jest takich samych jak ASCII. Jest jednak 8-bitowy i pozwala na 256 znaków, więc zaczyna się od tego i zawiera znacznie szerszy wachlarz znaków, przy czym każde konkretne kodowanie koncentruje się na innym zestawie kryteriów. Latin-1 zawierał kilka akcentowanych liter i symboli, ale później został zastąpiony zmienionym zestawem o nazwie Latin-9, który zawiera zaktualizowane glify, takie jak symbol Euro.

tibetan script

(Fragment skryptu tybetańskiego, Unicode v4, z unicode.org)

  • Unicode — ten standard kodowania ma na celu uniwersalność. Obecnie zawiera 93 skrypty zorganizowane w kilka bloków, a wiele więcej jest w trakcie opracowywania. Unicode działa inaczej niż inne zestawy znaków, ponieważ zamiast bezpośrednio kodować glif, każda wartość jest kierowana dalej do „punktu kodowego”. Są to wartości szesnastkowe, które odpowiadają znakom, ale same glify są dostarczane przez program, taki jak przeglądarka internetowa, w sposób niezależny. Te punkty kodowe są zwykle przedstawiane w następujący sposób: U+0040 (co oznacza „@”). Specyficzne kodowania w ramach standardu Unicode to UTF-8 i UTF-16. UTF-8 próbuje zapewnić maksymalną kompatybilność z ASCII. Jest 8-bitowy, ale pozwala na użycie wszystkich znaków za pomocą mechanizmu podstawiania i wielu par wartości na znak. UTF-16 porzuca idealną kompatybilność ASCII dla pełniejszej 16-bitowej kompatybilności ze standardem.
  • ISO-10646 — to nie jest rzeczywiste kodowanie, tylko zestaw znaków Unicode, który został ustandaryzowany przez ISO. Jest to przede wszystkim ważne, ponieważ jest to repertuar znaków używany przez HTML. Brakuje niektórych z bardziej zaawansowanych funkcji zapewnianych przez Unicode, które umożliwiają sortowanie i pisanie od prawej do lewej wraz ze skryptami od lewej do prawej. Mimo to działa bardzo dobrze w Internecie, ponieważ umożliwia korzystanie z szerokiej gamy skryptów i pozwala przeglądarce interpretować glify. To sprawia, że ​​lokalizacja jest nieco łatwiejsza.

Jakiego kodowania powinienem użyć?

Cóż, ASCII działa dla większości osób anglojęzycznych, ale niewiele więcej. Częściej będziesz widzieć ISO-8859-1, który działa w większości języków zachodnioeuropejskich. Inne wersje ISO-8859 działają dla cyrylicy, arabskiego, greckiego lub innych specyficznych skryptów. Jeśli jednak chcesz wyświetlić wiele skryptów w tym samym dokumencie lub na tej samej stronie internetowej, UTF-8 zapewnia znacznie lepszą kompatybilność. Działa również bardzo dobrze w przypadku osób, które używają właściwej interpunkcji, symboli matematycznych lub niekonwencjonalnych znaków, takich jak kwadraty i pola wyboru.

gujarat samachar

(Wiele języków w jednym dokumencie, zrzut ekranu z gujaratsamachar.com)

Każdy zestaw ma jednak wady. ASCII ma ograniczone znaki interpunkcyjne, więc nie działa bardzo dobrze w przypadku edycji poprawnych typograficznie. Czy kiedykolwiek pisałeś kopiuj/wklej z Worda tylko po to, by mieć jakąś dziwną kombinację glifów? To jest wada ISO-8859, a właściwie jego rzekoma interoperacyjność ze stronami kodowymi specyficznymi dla systemu operacyjnego (patrzymy na CIEBIE, Microsoft!). Główną wadą UTF-8 jest brak odpowiedniego wsparcia w edycji i publikowaniu aplikacji. Innym problemem jest to, że przeglądarki często nie interpretują i wyświetlają tylko znacznik kolejności bajtów znaku zakodowanego w UTF-8. Powoduje to wyświetlanie niechcianych glifów. I oczywiście deklarowanie jednego kodowania i używania znaków z innego bez deklarowania/odwoływania się do nich na stronie internetowej utrudnia przeglądarkom ich poprawne renderowanie, a wyszukiwarkom ich odpowiednie indeksowanie.

Reklama

W przypadku własnych dokumentów, rękopisów itp. możesz użyć wszystkiego, czego potrzebujesz, aby wykonać zadanie. Jeśli chodzi o sieć, wydaje się, że większość ludzi zgadza się na używanie wersji UTF-8, która nie używa oznaczenia kolejności bajtów, ale nie jest to całkowicie jednomyślne. Jak widać, każde kodowanie znaków ma swoje zastosowanie, kontekst oraz mocne i słabe strony. Jako użytkownik końcowy prawdopodobnie nie będziesz musiał się tym zajmować, ale teraz możesz zrobić dodatkowy krok naprzód, jeśli tak zdecydujesz.