Strona kodowa systemu Windows — Windows code page

Strony kodowe systemu Windows to zestawy znaków lub strony kodowe (znane jako kodowanie znaków w innych systemach operacyjnych) używane w systemie Microsoft Windows od lat 80. i 90. XX wieku. Strony kodowe systemu Windows były stopniowo zastępowane, gdy kod Unicode został zaimplementowany w systemie Windows , chociaż nadal są obsługiwane zarówno w systemie Windows, jak i na innych platformach, i nadal mają zastosowanie, gdy używane są skróty kodu Alt .

W systemach Windows istnieją dwie grupy systemowych stron kodowych: strony kodowe OEM i natywne dla systemu Windows („ANSI”). Strony kodowe w obu tych grupach są rozszerzonymi stronami kodowymi ASCII . Dodatkowe strony kodowe są obsługiwane przez standardowe procedury konwersji systemu Windows, ale nie są używane jako żaden typ systemowej strony kodowej.

Strona kodowa ANSI

Seria Windows-125x
Skróty) ANSI (błędna nazwa)
Standard Standard kodowania WHATWG
Rozszerza US-ASCII
Poprzedzony ISO 8859
zastąpiony przez Unicode
UTF-16 (w Win32 API)

Strony kodowe ANSI (oficjalnie nazywane „stronami kodowymi systemu Windows” po tym, jak Microsoft zaakceptował poprzedni termin jako mylący) są używane w natywnych aplikacjach innych niż Unicode (powiedzmy, zorientowanych bajtowo ) przy użyciu graficznego interfejsu użytkownika w systemach Windows. Termin „ANSI” jest mylący, ponieważ te strony kodowe systemu Windows nie są zgodne z żadnym standardem ANSI ; strona kodowa 1252 została oparta na wczesnym projekcie ANSI, który stał się międzynarodową normą ISO 8859-1 , która dodaje kolejne 32 kody kontrolne i miejsce na 96 znaków drukowalnych. Wśród innych różnic, strony kodowe Windows przydzielają znaki drukowane do dodatkowej przestrzeni kodu kontrolnego, czyniąc je w najlepszym razie nieczytelnymi dla systemów operacyjnych zgodnych ze standardami.)

Większość starszych stron kodowych „ANSI” ma numery stron kodowych we wzorcu 125x. Jednak strony kodowe 874 (tajskie) i wschodnioazjatyckie wielobajtowe strony kodowe „ANSI” ( 932 , 936 , 949 , 950 ), z których wszystkie są również używane jako strony kodowe OEM, są ponumerowane tak, aby odpowiadały podobnym (ale nie identycznym) stronom kodowym IBM kodowania. Chociaż strona kodowa 1258 jest również używana jako strona kodowa OEM, jest oryginalna dla firmy Microsoft, a nie rozszerzeniem istniejącego kodowania. IBM przydzieliło własne, różne numery wariantom firmy Microsoft, które są podane w celach informacyjnych na poniższych listach, o ile ma to zastosowanie.

Wszystkie 125x stron kodowych systemu Windows, a także 874 i 936, są oznaczone przez Internet Assigned Numbers Authority (IANA) jako "Windows- numeru ", choć "Windows-936" jest traktowane jako synonim " GBK ". Strona kodowa systemu Windows 932 jest zamiast tego oznaczona jako „Windows-31J”.

Strony kodowe ANSI Windows, a zwłaszcza strona kodowa 1252 , zostały nazwane tak, ponieważ były rzekomo oparte na szkicach przesłanych lub przeznaczonych dla ANSI. Jednak ANSI i ISO nie ustandaryzowały żadnej z tych stron kodowych. Zamiast tego są to albo:

Microsoft przypisał około dwunastu znaków typograficznych i biznesowych (w tym zwłaszcza znak euro , €) w CP1252 do punktów kodowych 0x80-0x9F, które w ISO 8859 są przypisane do kodów kontrolnych C1 . Te przypisania są również obecne w wielu innych stronach kodowych ANSI/Windows w tych samych punktach kodowych. Windows nie używał kodów kontrolnych C1, więc decyzja ta nie miała bezpośredniego wpływu na użytkowników Windows. Jednak informacje zawarte w pliku przeniesionym na platformę zgodną ze standardami, taką jak Unix lub MacOS, były niewidoczne i potencjalnie zakłócały działanie.

Strona kodowa OEM

Do strony kodowe OEM ( Original Equipment Manufacturer ) są wykorzystywane przez konsoli Win32 aplikacji i przez wirtualną DOS i może być uważany za relikt z DOS- a oryginalnego IBM PC architektury. Zaimplementowano osobny zestaw stron kodowych nie tylko ze względu na kompatybilność, ale także dlatego, że czcionki sprzętu VGA (i potomnego) sugerują, że kodowanie znaków rysowania linii jest zgodne ze stroną kodową 437 . Większość stron kodowych OEM ma wiele punktów kodowych, szczególnie dla znaków nieliterowych, z drugą (nie-ASCII) połową CP437.

Typowa strona kodowa OEM, w swojej drugiej połowie, nawet w przybliżeniu nie przypomina żadnej strony kodowej ANSI/Windows. Niemniej jednak dwie jednobajtowe strony kodowe o stałej szerokości (874 dla tajlandzkiego i 1258 dla wietnamskiego ) i cztery wielobajtowe strony kodowe CJK ( 932 , 936 , 949 , 950 ) są używane jako strony kodowe OEM i ANSI. Strona kodowa 1258 używa kombinacji znaków diakrytycznych , ponieważ wietnamski wymaga więcej niż 128 kombinacji liter i znaków diakrytycznych. Jest to w przeciwieństwie do VISCII , który zastępuje niektóre kody kontrolne C0 (tj. ASCII).

Historia

Początkowo systemy komputerowe i języki programowania systemowego nie rozróżniały znaków i bajtów : w przypadku skryptów segmentowych używanych w większości krajów Afryki, obu Ameryk, południowej i południowo-wschodniej Azji, na Bliskim Wschodzie i w Europie, znak potrzebuje tylko jednego bajtu , ale dla zestawów ideograficznych używanych w innych częściach świata potrzebne są dwa lub więcej bajtów . Doprowadziło to później do wielu nieporozumień. Oprogramowanie i systemy firmy Microsoft poprzedzające linię Windows NT są tego przykładami, ponieważ używają stron kodowych OEM i ANSI, które nie stanowią różnicy.

Od końca lat 90. oprogramowanie i systemy przyjęły Unicode jako preferowany format przechowywania; trend ten został poprawiony przez powszechne przyjęcie XML , który zapewnia bardziej adekwatny mechanizm oznaczania używanego kodowania. Najnowsze produkty firmy Microsoft i interfejsy programów aplikacji używają wewnętrznie Unicode, ale wiele aplikacji i interfejsów API nadal używa domyślnego kodowania „locale” komputera podczas odczytywania i zapisywania danych tekstowych do plików lub na standardowe wyjście. Dlatego nadal można napotkać pliki, które są czytelne i zrozumiałe w jednej części świata, ale niezrozumiałe mojibake w innej.

UTF-8, UTF-16

Microsoft zdecydował się na zaadoptowanie 16-bitowego (dwubajtowego) systemu UTF-16 dla wszystkich swoich systemów operacyjnych począwszy od Windows NT. Sposób ten koduje jednoznacznie wszystkie znaki Unicode w podstawowe Multilingual Plane i kod 32-bitowy (cztery bajty) dla innych - ale reszta branży ( uniksowych systemów i sieci) wybrał UTF-8 (który wykorzystuje jeden bajt dla 7-bitowy zestaw znaków ASCII , dwa lub trzy bajty dla innych znaków w BMP i cztery bajty dla reszty). Od wersji 1803 systemu Windows 10 komputery z systemem Windows można skonfigurować tak, aby zezwalały na UTF-8 jako stronę kodową „ANSI” i OEM.

Lista

Istnieją następujące strony kodowe systemu Windows:

Seria Windows-125x

Te dziewięć stron kodowych to rozszerzone 8-bitowe kodowania SBCS ASCII i zostały zaprojektowane przez firmę Microsoft do użytku jako strony kodowe ANSI w systemie Windows. Są one powszechnie znane pod nazwami zarejestrowanymi w IANA jako windows-<number>, ale czasami są również nazywane cp<number>„cp” dla „strony kodowej”. Wszystkie są używane jako strony kodowe ANSI; Windows-1258 jest również używany jako strona kodowa OEM.

Seria Windows-125x zawiera dziewięć stron kodowych ANSI i obejmuje głównie skrypty z Europy i Azji Zachodniej z dodatkiem Wietnamu . Kodowania systemowe dla języków tajlandzkiego i wschodnioazjatyckiego zostały ponumerowane, aby pasowały do ​​podobnych stron kodowych IBM i są używane zarówno jako strony kodowe ANSI, jak i OEM; zostały one omówione w kolejnych sekcjach.

NS Opis Związek z ISO 8859 lub innymi ustalonymi kodowaniami
1250 łaciński  2 / środkowoeuropejski Podobny do ISO-8859-2, ale przenosi kilka znaków, w tym wiele liter.
1251 cyrylica Niekompatybilny zarówno z ISO-8859-5, jak i KOI-8 .
1252 łacina 1 / zachodnioeuropejski Nadzbiór ISO-8859-1 (bez elementów sterujących C1). Repertuar listowy odpowiednio podobny do CP850 .
1253 grecki Podobny do ISO 8859-7, ale przenosi kilka znaków, w tym literę.
1254 turecki Nadzbiór ISO 8859-9 (bez elementów sterujących C1).
1255 hebrajski Prawie nadzbiór ISO 8859-8 , ale z dwoma niezgodnymi zmianami interpunkcji.
1256 arabski Niezgodny z ISO 8859-6 ; raczej strona kodowa OEM 708 jest nadzbiorem ISO 8859-6 (ASMO 708).
1257 bałtycki Nie ISO 8859-4 ; późniejsza norma ISO 8859-13 jest ściśle powiązana, ale z pewnymi różnicami w dostępnej interpunkcji.
1258 wietnamski (również OEM) Niezwiązany z VSCII lub VISCII , używa mniej znaków bazowych przy łączeniu znaków diakrytycznych.

Strony kodowe DOS

Są one również oparte na ASCII. Większość z nich jest dołączona do użytku jako strony kodowe OEM; strona kodowa 874 jest również używana jako strona kodowa ANSI.

  • 437  – IBM PC US, 8-bitowy SBCS rozszerzony ASCII . Znany jako OEM-US, kodowanie podstawowej wbudowanej czcionki kart graficznych VGA.
  • 708  – arabski, rozszerzony ISO 8859-6 (ASMO 708)
  • 720  – arabski, z zachowaniem znaków do rysowania pudełek w ich zwykłych lokalizacjach
  • 737  - "MS-DOS grecki". Zachowuje wszystkie znaki do rysowania pudełek. Bardziej popularny niż 869.
  • 775  – "Obręcz MS-DOS Bałtyk"
  • 850  - "MS-DOS Latin 1". Pełny (przearanżowany) repertuar ISO 8859-1 .
  • 852  - "MS-DOS łaciński 2"
  • 855  – „Cyrylica MS-DOS”. Używany głównie do języków południowosłowiańskich . Obejmuje (zmieniony) repertuar ISO-8859-5 . Nie mylić z cp866.
  • 857  - "MS-DOS turecki"
  • 858  – zachodnioeuropejski ze znakiem euro
  • 860  – „Portugalski MS-DOS”
  • 861  - "MS-DOS islandzki"
  • 862  - „MS-DOS hebrajski”
  • 863  - „MS-DOS francuski Kanada”
  • 864  – arabski
  • 865  – „MS-DOS nordycki”
  • 866  - "MS-DOS cyrylica rosyjski", cp866. Jedyna strona kodowa czysto OEM (zamiast ANSI lub obie) zawarta jako starsze kodowanie w WHATWG Encoding Standard for HTML5 .
  • 869  - "MS-DOS grecki 2", IBM869. Pełny (przearanżowany) repertuar ISO 8859-7 .
  • 874  – Thai , używany również jako strona kodowa ANSI, rozszerza ISO 8859-11 (a zatem TIS-620 ) o kilka dodatkowych znaków z Windows-1252. Odpowiada stronie kodowej IBM 1162 (IBM-874 jest podobny, ale ma różne rozszerzenia).

Wschodnioazjatyckie wielobajtowe strony kodowe

Często tylko częściowo odpowiadają one stronom kodowym IBM o tym samym numerze: strony kodowe 932, 936 i 949 różnią się od stron kodowych IBM o tym samym numerze, podczas gdy Windows-951 jako część kludge nie jest powiązany z IBM-951. Odpowiednie strony kodowe IBM są podane w drugiej kolumnie. Strony kodowe 932, 936, 949 i 950/951 są używane jako strony kodowe ANSI i OEM w odpowiednich lokalizacjach.

NS Odpowiednik IBM Język Kodowanie Posługiwać się
932 943 język japoński Shift JIS (wariant Microsoft) ANSI/OEM (Japonia)
936 1386 Uproszczony chiński) GBK ANSI/OEM (ChRL, Singapur)
949 1363 koreański Ujednolicony kod Hangul ANSI/OEM (Republika Korei)
950 1370, 1373 Chiński tradycyjny) Big5 (wariant Microsoft) ANSI/OEM (Tajwan, Hongkong)
951 5471 Chiński tradycyjny) Big5-HKSCS (2001 wyd.) ANSI/OEM (Hongkong, 98/NT4/2000/XP z łatką HKSCS)

Kilka dalszych wielobajtowych stron kodowych jest obsługiwanych do dekodowania lub kodowania przy użyciu bibliotek systemu operacyjnego, ale nie jest używany jako żaden rodzaj kodowania systemowego w żadnej lokalizacji.

NS Odpowiednik IBM Język Kodowanie Posługiwać się
1361 - koreański Johab (KS C 5601-1992 załącznik 3) Konwersja
20000 964 Chiński tradycyjny) CNS 11643 Konwersja
20001 - Chiński tradycyjny) TCA Konwersja
20002 - Chiński tradycyjny) Big5 (wariant ETEN) Konwersja
20003 ? Chiński tradycyjny) IBM 5500 Konwersja
20004 - Chiński tradycyjny) Teletekst Konwersja
20005 - Chiński tradycyjny) Wang Konwersja
20932 , 51932 954 (w przybliżeniu) język japoński EUC-JP Konwersja
20936 , 51936 - Uproszczony chiński) GB2312 Konwersja
20949 , 51949 - koreański Wansung (8-bitowy z ASCII, tj. EUC-KR ) Konwersja

Strony kodowe EBCDIC

  • 37 – IBM EBCDIC USA-Kanada, 8-bitowy SBCS
  • 500 – łacina 1
  • 870 – IBM870
  • 875 – cp875
  • 1026 - EBCDIC turecki
  • 1047 – IBM01047 – łaciński 1
  • 1140 – IBM01141
  • 1141 – IBM01141
  • 1142 – IBM01142
  • 1143 – IBM01143
  • 1144 – IBM01144
  • 1145 – IBM01145
  • 1146 – IBM01146
  • 1147 – IBM01147
  • 1148 – IBM01148
  • 1149 – IBM01149
  • 20273  – EBCDIC Niemcy
  • 20277  – EBCDIC Dania/Norwegia
  • 20278  – EBCDIC Finlandia/Szwecja
  • 20280  – EBCDIC Włochy
  • 20284  — EBCDIC Ameryka Łacińska/Hiszpania
  • 20285  – EBCDIC Wielka Brytania
  • 20290  – EBCDIC japoński
  • 20297  – EBCDIC Francja
  • 20420  – EBCDIC arabski
  • 20423  - EBCDIC grecki
  • 20424  – x-EBCDIC-koreańskiRozszerzony
  • 20833  – koreański
  • 20838  – EBCDIC tajski;
  • 20924 – IBM00924 – IBM EBCDIC Latin 1/Open System (1047 + symbol Euro)
  • 20871  - EBCDIC islandzki
  • 20880  – EBCDIC cyrylica
  • 20905  - EBCDIC turecki
  • 21025 – EBCDIC cyrylica
  • 21027  - japoński EBCDIC (niekompletny, przestarzały)

Strony kodowe związane z Unicode

Strony kodowe zgodności z komputerami Macintosh

  • 10000  – Apple Macintosh Roman
  • 10001  – Apple Macintosh Japoński
  • 10002  – Apple Macintosh chiński (tradycyjny) (BIG-5)
  • 10003  – Apple Macintosh koreański
  • 10004  – Apple Macintosh arabski
  • 10005  – Hebrajski Apple Macintosh
  • 10006  – Apple Macintosh Grecki
  • 10007  – Cyrylica Apple Macintosh
  • 10008  — Apple Macintosh chiński (uproszczony) (GB 2312)
  • 10010  – Apple Macintosh Rumuński
  • 10017  – Apple Macintosh Ukraiński
  • 10021  – Apple Macintosh Thai
  • 10029  – Apple Macintosh Roman II / Europa Środkowa
  • 10079  – Apple Macintosh islandzki
  • 10081  – Apple Macintosh turecki
  • 10082  – Apple Macintosh chorwacki

Strony kodowe ISO 8859

Strony kodowe ITU-T

Strony kodowe KOI8

  • 20866 – rosyjski – KOI8-R
  • 21866 – ukraiński – KOI8-U (lub KOI8-RU w niektórych wersjach)

Problemy wynikające z używania stron kodowych

Firma Microsoft zdecydowanie zaleca używanie Unicode w nowoczesnych aplikacjach, ale wiele aplikacji lub plików danych nadal zależy od starszych stron kodowych.

  • Programy muszą wiedzieć, jakiej strony kodowej użyć, aby poprawnie wyświetlić zawartość plików (przed Unicode). Jeśli program używa niewłaściwej strony kodowej, może wyświetlać tekst jako mojibake .
  • Używana strona kodowa może różnić się w zależności od komputera, więc pliki (przed Unicode) utworzone na jednym komputerze mogą być nieczytelne na innym.
  • Dane są często niewłaściwie oznakowane stroną kodową lub nie są oznakowane wcale, co utrudnia określenie prawidłowej strony kodowej do odczytania danych.
  • Te strony kodowe firmy Microsoft różnią się w różnym stopniu od niektórych standardów i implementacji innych dostawców. Nie jest to problem Microsoft per se , jak to się dzieje ze wszystkimi dostawcami, ale brak spójności sprawia, że ​​interoperacyjność z innymi systemami jest w niektórych przypadkach zawodna.
  • Użycie stron kodowych ogranicza zestaw znaków, które mogą być użyte.
  • Znaki wyrażone w nieobsługiwanej stronie kodowej mogą zostać przekonwertowane na znaki zapytania (?) lub inne znaki zastępcze lub na prostszą wersję (np. usunięcie akcentów z litery). W obu przypadkach oryginalny znak może zostać utracony.

Zobacz też

  • AppLocale  – narzędzie do uruchamiania aplikacji innych niż Unicode (opartych na stronie kodowej) w ustawieniach regionalnych wybranych przez użytkownika.

Bibliografia

Zewnętrzne linki