ISO/IEC 8859‑7
ISO/IEC 8859‑7, znany również jako Latin/Greek, jest jedną z serii ISO/IEC 8859 – standardów określających 8‑bitowe zestawy znaków przeznaczone do kodowania alfabetów zachodnioeuropejskich i niektórych innych języków. Konkretny wariant 8859‑7 został opracowany w celu wsparcia języka greckiego (zarówno nowoczesnego, jak i klasycznego) oraz kilku języków używających alfabetu greckiego, takich jak cypryjski i niektóre dialekty języka łacińskiego stosowane w literaturze greckiej.
Historia
Projektowanie serii ISO/IEC 8859 rozpoczęło się w drugiej połowie lat 80. XX wieku, kiedy to potrzeba jednolitego, jednobajtowego kodowania znaków dla różnych języków europejskich stała się widoczna w środowiskach komputerowych. Standard 8859‑7 został przyjęty w 1987 roku przez komitet ISO w ramach podkomitetu JTC‑1/SC‑2. W 1999 r. pod kątem zgodności z nowoczesnymi systemami został ponownie zatwierdzony i opublikowany jako ISO/IEC 8859‑1 – później uznany za wersję referencyjną.
Zastosowanie
- Systemy operacyjne i aplikacje w Grecji oraz na Cyprze w latach 80.–2000.
- Legacy‑owe bazy danych i pliki tekstowe, które nie przeszły na Unicode.
- Niektóre urządzenia wbudowane, drukarki i telewizory cyfrowe wykorzystywały ten zestaw znaków jako domyślny w interfejsie użytkownika.
Struktura i mapa znakĂłw
ISO/IEC 8859‑7 to jednowyrazowy (8‑bitowy) kodowanie, w którym 0‑127 (00‑7F) to standardowy zestaw ASCII. Pozycje 128‑159 (80‑9F) są nieprzypisane (control characters), a 160‑255 (A0‑FF) zawierają greckie litery oraz dodatkowe znaki interpunkcyjne i symboliczne.
| Hex | Unicode | Opis |
|---|---|---|
| A0 | U+00A0 | NO‑BREAK SPACE |
| A1 | U+2018 | LEFT SINGLE QUOTATION MARK |
| A2 | U+2019 | RIGHT SINGLE QUOTATION MARK |
| A3 | U+00A3 | POUND SIGN |
| A4 | U+20AC | EURO SIGN (od wersji 1998) |
| A5 | U+20AF | DRACHMA SIGN |
| A6 | U+00A6 | BROKEN BAR |
| A7 | U+00A7 | SECTION SIGN |
| A8 | U+00A8 | DIACRITICAL MARK |
| A9 | U+00A9 | COPYRIGHT SIGN |
| AA | U+037A | GREEK YPOGEGRAMMENI |
| AB | U+00AB | LEFT-POINTING DOUBLE ANGLE QUOTATION MARK |
| AC | U+00AC | NOT SIGN |
| AD | U+00AD | SOFT HYPHEN |
| AE | U+00AE | REGISTERED SIGN |
| AF | U+2015 | HORIZONTAL BAR |
| C0 | U+0391 | GREEK CAPITAL LETTER ALPHA |
| C1 | U+0392 | GREEK CAPITAL LETTER BETA |
| C2 | U+0393 | GREEK CAPITAL LETTER GAMMA |
| C3 | U+0394 | GREEK CAPITAL LETTER DELTA |
| C4 | U+0395 | GREEK CAPITAL LETTER EPSILON |
| FF | U+03FF | GREEK SMALL LETTER OMEGA |
Kompatybilność i migracja
ISO/IEC 8859‑7 jest w pełni kompatybilny z ASCII w pierwszej połowie (0‑127). Współczesne systemy operacyjne i edytory tekstu zazwyczaj automatycznie wykrywają i konwertują pliki z tym kodowaniem do formatu Unicode (UTF‑8 lub UTF‑16). Narzędzia takie jak iconv czy biblioteki ICU oferują funkcje konwersji pomiędzy ISO/IEC 8859‑7 a Unicode.
PorĂłwnanie z innymi kodowaniami
- ISO/IEC 8859‑1 – przeznaczony dla alfabetu łacińskiego zachodniego, nie zawiera greckich liter.
- ISO/IEC 8859‑9 – turecka wersja 8859‑1, również nie obsługuje greki.
- Windows‑1253 – 8‑bitowy zestaw znaków greckich używany w systemach Microsoft, posiada dodatkowe znaki nieobecne w 8859‑7.
- Unicode (UTF‑8/UTF‑16) – jednorodne rozwiązanie obejmujące wszystkie znaki greckie oraz tysiące innych pism.
Przykłady użycia
// Przykład w języku C – konwersja z ISO‑8859‑7 do Unicode
#include <iconv.h>
#include <stdio.h>
int main() {
const char *in = "\xC3\xE1\xE4\xEC\xEF\xE7"; // „Άβγδεζ” w ISO‑8859‑7
char out[256];
size_t inbytes = 6, outbytes = sizeof(out);
iconv_t cd = iconv_open("UTF-8", "ISO-8859-7");
char *pin = (char*)in, *pout = out;
iconv(cd, &pin, &inbytes, &pout, &outbytes);
iconv_close(cd);
printf("UTF‑8: %s\n", out);
return 0;
}
Widok dzisiaj
Choć ISO/IEC 8859‑7 został w dużej mierze zastąpiony przez Unicode, nadal można go spotkać w:
- archiwalnych dokumentach i bazach danych w Grecji;
- starszych systemach kontroli wersji, które nie obsługują Unicode;
- specyficznych aplikacjach przemysłowych, gdzie migracja wymagałaby kosztownych zmian.