ISO/IECÂ 8859
ISO/IEC 8859 – seria międzynarodowych standardów kodowania znaków opracowanych przez ISO (Międzynarodową Organizację Normalizacyjną) we współpracy z IEC (Międzynarodową Komisją Elektrotechniczną). Standardy te definiują 8‑bitowe zestawy znaków, które rozszerzają 7‑bitowy kod ASCII o dodatkowe znaki potrzebne w różnych językach i tradycjach pisma.
Historia i kontekst
Podstawą ISO/IEC 8859 jest wcześniejszy standard ISO/IEC 646, czyli 7‑bitowy kod oparty na ASCII, używany głównie w systemach anglo‑saskich. W latach 80. XX‑w. pojawiła się potrzeba wprowadzenia jednolitego zestawu znaków zdolnego obsłużyć języki zachodnioeuropejskie, wschodnioeuropejskie, arabskie i inne. W odpowiedzi powstała seria ISO/IEC 8859‑x, gdzie x oznacza numer części dedykowanej określonemu zakresowi językowemu.
Struktura serii
Każda część serii ISO/IEC 8859 definiuje 256 kodów (0‑255). Kody 0‑127 są identyczne z ASCII, natomiast kody 128‑255 zawierają znaki specyficzne dla danej grupy językowej. Do najważniejszych części należą:
- ISO/IEC 8859‑1 (Latin‑1) – obsługa języków zachodnioeuropejskich (angielski, francuski, niemiecki, hiszpański, portugalski, włoski itp.).
- ISO/IEC 8859‑2 (Latin‑2) – języki środkowoeuropejskie (polski, czeski, słowacki, węgierski, rumuński).
- ISO/IEC 8859‑3 (Latin‑3) – języki śródziemnomorskie (turkuski, maltański, galicyjski).
- ISO/IEC 8859‑4 (Latin‑4) – języki bałtyckie (estoński, litewski, łotewski).
- ISO/IEC 8859‑5 (Cyrillic) – języki używające cyrylicy (rosyjski, bułgarski, serbski).
- ISO/IEC 8859‑6 (Arabic) – alfabet arabski.
- ISO/IEC 8859‑7 (Greek) – alfabet grecki.
- ISO/IEC 8859‑8 (Hebrew) – alfabet hebrajski.
- ISO/IEC 8859‑9 (Latin‑5) – turecki zamiennik Latin‑1.
- ISO/IEC 8859‑10 (Latin‑6) – rozszerzenie obsługi języków północnoeuropejskich.
- ISO/IEC 8859‑11 (Thai) – alfabet tajski.
- ISO/IEC 8859‑13 (Latin‑7) – języki bałtyckie i nordyckie (litewski, łotewski, polski, islandzki).
- ISO/IEC 8859‑14 (Latin‑8) – języki celtyckie (irlandzki, walijski).
- ISO/IEC 8859‑15 (Latin‑9) – poprawiona wersja Latin‑1 z euro i znakami francuskimi.
- ISO/IEC 8859‑16 (Latin‑10) – języki południowo‑wschodniej Europy (rumuński, rumuński, serbski w alfabecie łacińskim).
Znaczenie i zastosowanie
Standardy ISO/IEC 8859 były przez wiele lat podstawą kodowania znaków w systemach operacyjnych, przeglądarkach internetowych i aplikacjach biurowych. Do ich szerokiego przyjęcia przyczyniły się:
- Kompatybilność ze wstępnie istniejącym kodowaniem ASCII – ułatwiała migrację istniejących programów.
- Jednoznaczny zestaw znaków dla konkretnych grup językowych – eliminował problemy z tzw. „mojibake”.
- Wsparcie w standardach HTML 4.0, które pozwalały określić zestaw znaków w atrybucie
charset.
Wraz z rozwojem Unicode oraz UTF‑8 popularność kodowań z serii ISO/IEC 8859 stopniowo maleje, lecz wciąż są używane w niektórych starszych systemach, bazach danych oraz w specjalistycznych aplikacjach przemysłowych.
PorĂłwnanie z Unicode
Podstawowa różnica między ISO/IEC 8859 a Unicode polega na liczbie dostępnych znaków: ISO/IEC 8859 ogranicza się do 256 symboli, podczas gdy Unicode definiuje ponad 150 000 kodów obejmujących praktycznie wszystkie współczesne i historyczne systemy pisma. Dzięki temu Unicode (w szczególności w formacie UTF‑8) stał się uniwersalnym rozwiązaniem dla aplikacji wielojęzycznych i Internetu.
Implementacja i wsparcie techniczne
W praktyce obsługa ISO/IEC 8859 jest zapewniona przez większość języków programowania i bibliotek:
- W C i C++ przy pomocy funkcji
setlocaleoraz bibliotekiconv. - W Javie poprzez klasy
Charset(np.Charset.forName("ISO-8859-2")). - W Pythonie uĹĽycie kodowania
"iso8859_1","iso8859_2"itp.
Obecny status
Choć ISO/IEC 8859 nie jest już dominującym standardem kodowania, jego części wciąż pozostają w oficjalnych repertoriach IANA jako registered character sets. Dokumenty normatywne są dostępne w bazie danych ISO pod numerami ISO/IEC 8859‑1:1998, ISO/IEC 8859‑2:2007 i podobnie dla kolejnych części.