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
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:
- Nadzbiory zestawów standardów, takich jak ISO 8859 i różne standardy krajowe (np. Windows-1252 vs. ISO-8859-1 ),
- Główne ich modyfikacje (uczynienie ich niekompatybilnymi w różnym stopniu, np. Windows-1250 vs. ISO-8859-2 )
- Brak kodowania równoległego (jak Windows-1257 vs. ISO-8859-4 ; ISO-8859-13 zostało wprowadzone znacznie później). Ponadto Windows-1251 nie przestrzega standardu ISO-8859-5 ani ówczesnego KOI-8 .
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)
- 1200 – Unicode (BMP ISO 10646, UTF-16LE ). Dostępne tylko dla zarządzanych aplikacji
- 1201 — Unicode ( UTF-16BE ). Dostępne tylko dla zarządzanych aplikacji
- 12000 – UTF-32 . Dostępne tylko dla zarządzanych aplikacji
- 12001 – UTF-32 . Big-endian. Dostępne tylko dla zarządzanych aplikacji
- 65000 – Unikod ( UTF-7 )
- 65001 – Unikod ( UTF-8 )
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
- 28591 – ISO-8859-1 – Latin-1 (odpowiednik IBM: 819)
- 28592 – ISO-8859-2 – Łacina-2
- 28593 – ISO-8859-3 – Latin-3 lub południowoeuropejski
- 28594 – ISO-8859-4 – Latin-4 lub Północnoeuropejski
- 28595 – ISO-8859-5 – łacina/cyrylica
- 28596 – ISO-8859-6 – łac./arab.
- 28597 – ISO-8859-7 – łac./grecki
- 28598 – ISO-8859-8 – łac./hebrajski
- 28599 – ISO-8859-9 – Latin-5 lub turecki
- 28600 – ISO-8859-10 – Łacina-6
- 28601 – ISO-8859-11 – łacina/tajski
- 28602 – ISO-8859-12 – zarezerwowane dla języka łacińskiego/dewanagari, ale porzucone (nieobsługiwane)
- 28603 – ISO-8859-13 – Latin-7 lub Baltic Rim
- 28604 – ISO-8859-14 – Latin-8 lub Celtic
- 28605 – ISO-8859-15 – Łacina-9
- 28606 – ISO-8859-16 – Latin-10 lub Europa Południowo-Wschodnia
- 38596 – ISO-8859-6- I – Łaciński/arabski (logiczny porządek dwukierunkowy)
- 38598 – ISO-8859-8- I – Łaciński/Hebrajski (logiczny porządek dwukierunkowy)
Strony kodowe ITU-T
Strony kodowe KOI8
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
- Dokumentacja interfejsu API obsługi języków narodowych (NLS) . Tabela pokazująca strony kodowe ANSI i OEM na język (z archiwum internetowego, ponieważ firma Microsoft usunął oryginalną stronę)
- Rejestracje nazw znaków IANA
- Tabela mapowania Unicode dla stron kodowych Windows
- Mapowania Unicode stron kodowych systemu Windows z „najlepszym dopasowaniem”