encyklopedia.space

Windows‑1255

Windows‑1255 (czasami określany jako cp1255) jest jednobajtowym zestawem znaków opracowanym przez firmę Microsoft w celu obsługi języka hebrajskiego w systemach operacyjnych Windows. Został wprowadzony w latach 1995 jako część rodziny kodowań Windows‑125x, które zastąpiły starsze zestawy znaków z serii ISO‑8859 w wielu zastosowaniach komercyjnych.

Historia

W początkowych latach rozwoju komputerów osobistych w regionach, w których używa się alfabetu hebrajskiego, dominowały kodowania ISO‑8859‑8 oraz DOS‑862. Microsoft, dążąc do unifikacji obsługi wielu języków w ramach jednego systemu, opracował własny zestaw znaków, który miał lepiej współpracować z systemem Windows i zapewniać wsparcie dla dodatkowych znaków typograficznych oraz znaków diakrytycznych używanych w nowoczesnym hebrajskim.

Budowa kodowania

Windows‑1255 jest kodowaniem jednowybajtowym, co oznacza, że każdy znak jest reprezentowany przez jeden bajt (0‑255). Pierwsze 128 kodów (0‑127) odpowiadają standardowemu zestawowi ASCII, a zakres 128‑255 został przydzielony dla znaków charakterystycznych dla języka hebrajskiego oraz kilku symboli specjalnych.

Kluczowe elementy zestawu:

  • Znaki hebrajskie (U+0590‑U+05FF) – 27 liter podstawowych oraz dodatkowe znaki diakrytyczne.
  • Znaki interpunkcyjne i symbole matematyczne (np. U+203E – OVERLINE).
  • Symbol waluty ₪ (shekel izraelski – U+20AA).
  • Znaki graficzne używane w starych aplikacjach Windows (np. ¢, £, ¥).

Mapa kodowa

Poniżej przedstawiono skróconą tabelę mapowania bajtów 0x80‑0xFF na ich odpowiedniki w Unicode:

    80 – €   81 –     82 – ‚   83 – ƒ   84 – „   85 – …   86 – †   87 – ‡
    88 – ˆ   89 – ‰   8A – Š   8B – ‹   8C – Œ   8D –     8E – Ž   8F –  
    90 –     91 – ‘   92 – ’   93 – “   94 – ”   95 – •   96 – –   97 – —
    98 – ˜   99 – ™   9A – š   9B – ›   9C – œ   9D –     9E – ž   9F – Ÿ
    A0 –     A1 – ¡   A2 – ¢   A3 – £   A4 – ¤   A5 – ¥   A6 – ¦   A7 – §
    A8 – ¨   A9 – ©   AA – ª   AB – «   AC – ¬   AD – ­   AE – ®   AF – ¯
    B0 – °   B1 – ±   B2 – ²   B3 – ³   B4 – ´   B5 – µ   B6 – ¶   B7 – ·
    B8 – ¸   B9 – ¹   BA – º   BB – »   BC – ¼   BD – ½   BE – ¾   BF – ¿
    C0 – א   C1 – ב   C2 – ג   C3 – ד   C4 – ה   C5 – ו   C6 – ז   C7 – ח
    C8 – ט   C9 – י   CA – ך   CB – כ   CC – ל   CD – ם   CE – מ   CF – נ
    D0 – ף   D1 – פ   D2 – ץ   D3 – צ   D4 – ק   D5 – ר   D6 – ש   D7 – ת
    D8 – ך   D9 – ן   DA – ף   DB – ץ   DC – –   DD – –   DE – –   DF – –
    E0 – à   E1 – á   E2 – â   E3 – ã   E4 – ä   E5 – å   E6 – æ   E7 – ç
    E8 – è   E9 – é   EA – ê   EB – ë   EC – ì   ED – í   EE – î   EF – ï
    F0 – ð   F1 – ń   F2 – ó   F3 – ô   F4 – õ   F5 – ö   F6 – ø   F7 – ù
    F8 – ú   F9 – û   FA – ü   FB – ý   FC – þ   FD – ÿ   FE – Ÿ   FF –  
  

Porównanie z innymi kodowaniami

W stosunku do ISO‑8859‑8, Windows‑1255 wprowadza następujące różnice:

  • Dodanie znaku ₪ (U+20AA).
  • Wprowadzenie znaków typograficznych typowych dla języka angielskiego (np. cudzysłowy „smart quotes”).
  • Zamiana kilku pozycji kontrolnych na znaki graficzne używane w środowisku Windows.

W przeciwieństwie do UTF‑8 i innych zmiennobajtowych kodowań Unicode, Windows‑1255 nie obsługuje znaków spoza zakresu hebrajskiego i podstawowego zestawu łacińskiego, co ogranicza jego zastosowanie w nowoczesnych aplikacjach wielojęzycznych.

Wykorzystanie i wsparcie

Choć w przeszłości Windows‑1255 był szeroko wykorzystywany w aplikacjach biurowych, przeglądarkach internetowych oraz w systemach operacyjnych Microsoft, od początku 2010 roku jego znaczenie systematycznie maleje na rzecz UTF‑8. Niemniej jednak wciąż można spotkać to kodowanie w:

  • Starszych bazach danych i systemach legacy.
  • Plikach konfiguracyjnych oraz raportach generowanych przez oprogramowanie, które nie przeszło na Unicode.
  • Niektórych systemach pocztowych obsługujących starsze nagłówki wiadomości e‑mail.

Konwersja

Współczesne języki programowania i biblioteki (np. Python, Java, .NET) oferują wbudowane mapowanie cp1255 ↔ UTF‑8. Przykładowo, w Pythonie konwersja odbywa się następująco:

bytes_data = b'\xe0\xe1\xe2'          # ciąg w Windows‑1255
unicode_str = bytes_data.decode('cp1255')
utf8_data = unicode_str.encode('utf-8')
  

Takie mechanizmy zapewniają płynne przejście między starszymi systemami a nowoczesnymi aplikacjami opartymi na Unicode.

Zobacz także