Jakie są kodowania znaków jak ANSI i Unicode, i jak się różnią?
ASCII, UTF-8, ISO-8859 ... Możliwe, że widzieliście te dziwne monikery, ale co one właściwie oznaczają? Czytaj dalej, aby wyjaśnić, czym jest kodowanie znaków i jak te akronimy odnoszą się do zwykłego tekstu, który widzimy na ekranie.
Fundamentalne bloki konstrukcyjne
Kiedy mówimy o języku pisanym, mówimy o literach będących budulcami słów, które następnie budują 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ę, tworząc 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, nie ma sensu, jeśli nie 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 Malayalam, obraz z Wikipedii)
W świecie komputerów używamy terminu "postać". Postać jest rodzajem pojęcia abstrakcyjnego, określonego przez określone parametry, ale jest to podstawowa jednostka znaczeniowa. Łaciński "A" nie jest tym samym, co grecki "alfa" lub arabski "alif", ponieważ mają one różne konteksty - pochodzą z różnych języków i mają nieco inne wymowy - możemy więc powiedzieć, że są to różne postacie. Wizualna reprezentacja postaci jest nazywana "glifem", a różne zestawy glifów są nazywane czcionkami. Grupy postaci należą do "zestawu" lub "repertuaru".
Po wpisaniu akapitu i zmianie czcionki nie zmieniasz wartości fonetycznych liter, zmieniasz ich wygląd. Jest po prostu kosmetyczny (ale nie nieważny!). Niektóre języki, takie jak starożytni Egipcjanie i Chińczycy, mają ideogramy; reprezentują one całe pomysły zamiast dźwięków, a ich wymowa może się zmieniać w czasie i odległości. Jeśli zastąpisz jeden znak dla drugiego, zastępujesz pomysł. To coś więcej niż zmiana liter, zmiana ideogramu.
Kodowanie znaków
(Obraz z Wikipedii)
Gdy piszesz coś na klawiaturze lub ładujesz plik, w jaki sposób komputer wie, co wyświetlić? Do tego służy 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ą tym, które znaki, podobnie jak ortografia dyktuje, które dźwięki odpowiadają, które litery. Kod Morse'a to rodzaj kodowania znaków. Wyjaśnia, w jaki sposób grupy długich i krótkich jednostek, takich jak sygnały dźwiękowe, reprezentują znaki. W alfabecie Morse'a znaki są po prostu angielskimi literami, cyframi i kropkami. Istnieje wiele kodowań znaków komputerowych, które przekładają się na litery, cyfry, znaki akcentujące, znaki interpunkcyjne, symbole międzynarodowe itd..
Często na ten temat używany jest również termin "strony kodowe". Są to w gruncie rzeczy kodowanie znaków używane przez określone firmy, często z niewielkimi modyfikacjami. Na przykład strona kodowa Windows 1252 (dawniej znana jako ANSI 1252) jest zmodyfikowaną formą ISO-8859-1. Są one najczęściej używane jako system wewnętrzny do odwoływania się 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 komunikują się ze sobą. Wraz z rosnącą popularnością internetu i powszechnym występowaniem zjawiska nawiązywania kontaktów stało się ono coraz ważniejsze w naszym codziennym życiu, nawet jeśli nie zdajemy sobie z tego sprawy..
Wiele różnych typów
(Zdjęcie od sarah sosiak)
Istnieje wiele różnych kodowań znaków i istnieje wiele powodów takiego stanu rzeczy. Które kodowanie znaków wybierzesz, zależy od Twoich potrzeb. Jeśli komunikujesz się po rosyjsku, sensowne jest użycie kodowania znaków, które obsługuje cyrylicę. Jeśli komunikujesz się po koreańsku, będziesz potrzebować czegoś, co dobrze reprezentuje Hangul i Hanja. Jeśli jesteś matematykiem, potrzebujesz czegoś, co dobrze reprezentuje wszystkie symbole naukowe i matematyczne, a także glify greckie i łacińskie. Jeśli jesteś dowcipnisiem, może skorzystasz z odwróconego tekstu. A jeśli chcesz, aby wszystkie te typy dokumentów były przeglądane przez dowolną osobę, potrzebujesz kodowania, które jest dość powszechne i łatwo dostępne.
Rzućmy okiem na niektóre z bardziej popularnych.
(Fragment tabeli ASCII, obraz z asciitable.com)
- ASCII - Amerykański Standardowy Kod Wymiany Informacji jest jednym ze starszych kodowań znaków. Pierwotnie został opracowany na podstawie kodów telegraficznych i ewoluował w miarę upływu czasu, aby objąć więcej symboli i niektóre obecnie przestarzałe, niedrukowane znaki kontrolne. Jest to prawdopodobnie tak podstawowe, jak można uzyskać w zakresie nowoczesnych systemów, 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 świecie dostępnych jest kilka nieoficjalnych wariantów.
- ISO-8859 - Najszerzej stosowana grupa kodowań znaków dla Międzynarodowej Organizacji Normalizacyjnej to numer 8859. Każde specyficzne kodowanie jest oznaczone numerem, często poprzedzonym przez opisowy znak, np. ISO-8859-3 (Latin-3), ISO-8859-6 (łaciński / arabski). Jest to nadzbiór ASCII, co oznacza, że pierwsze 128 wartości w kodowaniu są takie same jak ASCII. Jest on jednak 8-bitowy i pozwala na 256 znaków, więc zaczyna się od niego i zawiera znacznie szerszy wachlarz znaków, przy czym każde 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.
(Fragment skryptu tybetańskiego, Unicode v4, z unicode.org)
- Unicode - Ten standard kodowania ma na celu uniwersalność. Obecnie obejmuje 93 skrypty zorganizowane w kilku blokach, z wieloma więcej w pracach. Unicode działa inaczej niż inne zestawy znaków w tym miejscu zamiast bezpośredniego kodowania glifu, każda wartość jest kierowana dalej do "punktu kodowego". Są to wartości szesnastkowe, które odpowiadają znakom, ale same glify są dostarczane w sposób oderwany przez program , na przykład Twoja przeglądarka internetowa. Te punkty kodowe są zwykle przedstawiane w następujący sposób: U + 0040 (co oznacza "@"). Specyficzne kodowania w standardzie Unicode to UTF-8 i UTF-16. UTF-8 próbuje zapewnić maksymalną zgodność z ASCII. Jest 8-bitowy, ale pozwala na wszystkie postacie poprzez mechanizm zastępowania i wiele par wartości na znak. UTF-16 zapewnia 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 głównie ważne, ponieważ jest to repertuar postaci używany przez HTML. Brakuje niektórych bardziej zaawansowanych funkcji dostępnych w standardzie Unicode, które umożliwiają sortowanie i od prawej do lewej wraz ze skryptami od lewej do prawej. Mimo to działa bardzo dobrze do użytku w Internecie, ponieważ pozwala na korzystanie z szerokiej gamy skryptów i pozwala przeglądarce interpretować glify. Dzięki temu lokalizacja jest nieco łatwiejsza.
Jakie kodowanie powinno być używane?
Cóż, ASCII działa dla większości anglojęzycznych użytkowników, ale nie na wiele więcej. Częściej będziesz widzieć ISO-8859-1, który działa dla większości zachodnioeuropejskich języków. Inne wersje ISO-8859 działają dla cyrylicy, arabskiego, greckiego lub innych określonych skryptów. Jeśli jednak chcesz wyświetlać wiele skryptów w tym samym dokumencie lub na tej samej stronie internetowej, UTF-8 pozwala na znacznie lepszą kompatybilność. Działa również bardzo dobrze dla osób, które używają odpowiednich znaków interpunkcyjnych, symboli matematycznych lub znaków spoza mankietu, takich jak kwadraty i pola wyboru.
(Wiele języków w jednym dokumencie, Zrzut ekranu z gujaratsamachar.com)
Są jednak wady każdego zestawu. ASCII ma ograniczone znaki interpunkcyjne, więc nie działa niewiarygodnie dobrze dla korekt typograficznych. Czy kiedykolwiek pisałeś / piszesz tylko w programie Word, aby uzyskać dziwną kombinację glifów? Taka jest wada ISO-8859, a dokładniej jego domniemana interoperacyjność ze stronami kodowymi specyficznymi dla OS (patrzymy na CIEBIE, Microsoft!). Główną wadą UTF-8 jest brak odpowiedniego wsparcia w zakresie edycji i publikowania aplikacji. Innym problemem jest to, że przeglądarki często nie interpretują i wyświetlają tylko znak porządku bajtowego zakodowanego w formacie UTF-8. Powoduje to wyświetlanie niechcianych glifów. Oczywiście deklarowanie kodowania i używania znaków z innych bez zadeklarowania / odniesienia się do nich na stronie internetowej utrudnia przeglądarkom prawidłowe ich renderowanie, a wyszukiwarki odpowiednio je indeksują..
W przypadku własnych dokumentów, rękopisów itp. Można użyć wszystkiego, co jest potrzebne do wykonania pracy. Jeśli chodzi o sieć, wydaje się, że większość ludzi zgadza się na używanie wersji UTF-8, która nie używa znaku kolejności bajtów, ale to nie jest całkowicie jednomyślne. Jak widać, każde kodowanie znaków ma swoje zastosowanie, kontekst i 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 wybierzesz.