encyklopedia.space

ISO/IEC 8859‑13 – kodowanie znaków dla języków bałtyckich

Wstęp

ISO/IEC 8859‑13 (znane także jako Latin‑7 lub ISO Baltic) jest częścią serii ISO/IEC 8859 – ośmiobitowych zestawów znaków przeznaczonych do kodowania tekstu w językach opartych na alfabecie łacińskim. Standard ten został opracowany w celu zapewnienia pełnego wsparcia dla języków bałtyckich: litewskiego, łotewskiego oraz estonijskiego, a także dla języka polskiego i innych języków używających znaków diakrytycznych typowych dla regionu.

Historia

W latach 1995 pojawiła się potrzeba uzupełnienia istniejących zestawów z serii ISO 8859 (np. 8859‑4 – Latin‑4, 8859‑10 – Latin‑6), które nie obejmowały wszystkich znaków niezbędnych w językach bałtyckich. Projekt powstał pod auspicjami ISO i IEC, a ostateczna wersja standardu została przyjęta w 1997 roku. W praktyce kodowanie to jest najczęściej używane w systemach operacyjnych i aplikacjach skierowanych do rynku bałtyckiego, zwłaszcza w Litwie, Łotwie i Estonii.

Zakres znaków

ISO/IEC 8859‑13 zawiera 191 definiowanych znaków (128‑255) plus standardowy zestaw ASCII (0‑127). W przeciwieństwie do niektórych wcześniejszych wersji serii, w 8859‑13 uwzględniono:

  • Litery z ogonkami i kropkami charakterystycznymi dla języków bałtyckich: ą Ą č Č ė Ė ģ Ģ ī Į š Š ū Ū ž Ž oraz ich małe odpowiedniki.
  • Polskie znaki diakrytyczne: ą Ą ć Ć ę Ę ł Ł ń Ń ó Ó ś Ś ź Ź ż Ż.
  • Zestaw znaków interpunkcyjnych, symboli walutowych (€ – euro od wersji 1999) i technicznych.

Tablica znaków (wycinek)

HexUnicodeSymbolOpis
0xA0U+00A0 Niełamiąca spacja
0xA1U+0104ĄDuża litera A z ogonkiem
0xA2U+02D8˘Znaczek diakrytyczny (breve)
0xA3U+0141ŁPolska litera Ł
0xA4U+00A4¤Symbol waluty
0xA5U+013DĽLitera L z karonem
0xA6U+015AŚPolska litera Ś
0xA7U+0160ŠLitera S z haachem
0xA8U+015EŞLitera S z cedillą (dla języków tureckich)
0xA9U+0164ŤLitera T z haachem
0xAAU+0179ŹPolska litera Ź
0xABU+017DŽLitera Z z haachem
0xACU+017BŻPolska litera Ż
0xADU+00AD­Miękki podział (soft hyphen)
0xAEU+0105ąMała litera a z ogonkiem
0xAFU+02DB˛Znaczek diakrytyczny (ogonek)

Zastosowania

ISO/IEC 8859‑13 jest wykorzystywane w:

  • systemach operacyjnych Microsoft Windows (ustawienia regionalne dla języków bałtyckich),
  • starszych wersjach Mozilla Firefox i Internet Explorer przed wprowadzeniem pełnego wsparcia Unicode,
  • bazach danych i aplikacjach serwerowych, w których wymagana jest zgodność z legacy systemami,
  • drukarkach i urządzeniach peryferyjnych obsługujących kodowanie Latin‑7.

Kompatybilność i wsparcie

Choć Unicode stał się de facto standardem kodowania znaków, ISO/IEC 8859‑13 wciąż jest obsługiwany przez większość nowoczesnych języków programowania (np. Python, Java, C#) poprzez odpowiednie nazwy: iso-8859-13, latin7 lub cp28603. W konwersjach danych zaleca się stosowanie konwersji ISO‑8859‑13 → Unicode, co pozwala na zachowanie integralności znaków przy migracji do nowych systemów.

Powiązania z innymi standardami

ISO/IEC 8859‑13 jest jedną z dwunastu części serii ISO/IEC 8859. Na najbliższym poziomie znajduje się ISO/IEC 8859‑10 (Latin‑6), który obsługuje języki skandynawskie, oraz ISO/IEC 8859‑14 (Latin‑8) przeznaczony dla języków celtyckich. Wszystkie te zestawy bazują na wspólnym zestawie kodu ASCII (0‑127) i różnią się jedynie mapowaniem znaków w przedziale 128‑255.

Specyfikacja techniczna

Standard definiuje:

  • Układ bajtowy: jeden bajt = jeden znak.
  • Porządek kodowy: wielkość znaków nie ma wpływu na kolejność kodu – jest to kodowanie statyczne.
  • Kompatybilność z ASCII w zakresie 0‑127.
  • Brak znaków sterujących poza tymi zawartymi w ASCII.

Ograniczenia

Pomimo szerokiego wsparcia dla języków bałtyckich, ISO/IEC 8859‑13 nie zawiera znaków niełacińskich (np. cyrylicy, greki) oraz nie obsługuje pełnego zestawu znaków używanych w nowoczesnych aplikacjach internetowych (emoji, znaki matematyczne itp.). Z tego powodu w środowiskach wielojęzycznych zaleca się migrację do Unicode (UTF‑8 lub UTF‑16).

Przykładowe użycie w kodzie

# Python – konwersja z ISO‑8859‑13 do Unicode
tekst_iso = b'\xc4\x85\xea\xea\xed'   # ciąg w ISO‑8859‑13
tekst_utf8 = tekst_iso.decode('iso-8859-13')
print(tekst_utf8)  # wyświetli: „ąččņ”

Bibliografia i dalsza lektura

  • ISO/IEC 8859‑13:1998 – dokument standardowy (dostępny w bibliotekach technicznych).
  • „Kodowanie znaków w systemach informatycznych”, rozdział o serii ISO/IEC 8859, wyd. Springer, 2003.
  • Poradniki programistyczne dotyczące konwersji kodowań: Python, Java, C#.