Page de codes Windows - Windows code page
Les pages de codes Windows sont des ensembles de caractères ou de pages de codes (appelés codages de caractères dans d'autres systèmes d'exploitation) utilisés dans Microsoft Windows dans les années 1980 et 1990. Les pages de codes Windows ont été progressivement remplacées lorsque Unicode a été implémenté dans Windows , bien qu'elles soient toujours prises en charge à la fois par Windows et d'autres plates-formes, et s'appliquent toujours lorsque les raccourcis de code Alt sont utilisés.
Il existe deux groupes de pages de codes système dans les systèmes Windows : les pages de codes OEM et Windows natives ("ANSI"). Les pages de codes de ces deux groupes sont des pages de codes ASCII étendues . Les pages de codes supplémentaires sont prises en charge par les routines de conversion Windows standard, mais ne sont utilisées comme aucun type de page de codes système.
Page de codes ANSI
Pseudo(s) | ANSI (nom impropre) |
---|---|
Standard | Norme de codage WHATWG |
S'étend | US-ASCII |
Précédé par | ISO 8859 |
succédé par |
Unicode UTF-16 (dans l'API Win32) |
Les pages de codes ANSI (officiellement appelées "pages de codes Windows" après que Microsoft a accepté que l'ancien terme soit un abus de langage) sont utilisées pour les applications natives non Unicode (disons, orientées octets ) utilisant une interface utilisateur graphique sur les systèmes Windows. Le terme « ANSI » est inapproprié car ces pages de codes Windows ne sont conformes à aucune norme ANSI ; La page de codes 1252 était basée sur un premier projet ANSI qui est devenu la norme internationale ISO 8859-1 , qui ajoute 32 codes de contrôle supplémentaires et un espace pour 96 caractères imprimables. Entre autres différences, les pages de codes Windows allouent des caractères imprimables à l'espace de code de contrôle supplémentaire, les rendant au mieux illisibles pour les systèmes d'exploitation conformes aux normes.)
La plupart des pages de codes « ANSI » héritées ont des numéros de page de codes dans le modèle 125x. Cependant, 874 (thaï) et les pages de codes "ANSI" multi-octets d'Asie de l'Est ( 932 , 936 , 949 , 950 ), qui sont également toutes utilisées comme pages de codes OEM, sont numérotées pour correspondre à des IBM similaires (mais pas identiques). encodages. Bien que la page de codes 1258 soit également utilisée comme page de codes OEM, elle est d'origine Microsoft plutôt qu'une extension d'un encodage existant. IBM a attribué ses propres numéros différents aux variantes de Microsoft, ceux-ci sont donnés à titre de référence dans les listes ci-dessous, le cas échéant.
Toutes les pages de codes Windows 125x, ainsi que 874 et 936, sont étiquetées par Internet Assigned Numbers Authority (IANA) comme « numéro Windows », bien que « Windows-936 » soit considéré comme un synonyme de « GBK ». La page de codes Windows 932 est à la place étiquetée "Windows-31J".
Les pages de codes Windows ANSI, et en particulier la page de codes 1252 , étaient ainsi appelées car elles étaient prétendument basées sur des brouillons soumis ou destinés à ANSI. Cependant, l'ANSI et l' ISO n'ont standardisé aucune de ces pages de codes. Au lieu de cela, ils sont soit :
- Des sur-ensembles des ensembles de normes tels que ceux de l' ISO 8859 et les différentes normes nationales (comme Windows-1252 vs. ISO-8859-1 ),
- Modifications majeures de ceux-ci (les rendant incompatibles à divers degrés, comme Windows-1250 vs ISO-8859-2 )
- N'ayant pas d'encodage parallèle (comme Windows-1257 contre ISO-8859-4 ; ISO-8859-13 a été introduit beaucoup plus tard). De plus, Windows-1251 ne suit ni l'ISO -8859-5 normalisé ISO ni le KOI-8 alors en vigueur .
Microsoft a attribué une douzaine de caractères typographiques et commerciaux (y compris notamment, le signe euro , €) dans CP1252 aux points de code 0x80-0x9F qui, dans ISO 8859, sont attribués aux codes de contrôle C1 . Ces affectations sont également présentes dans de nombreuses autres pages de codes ANSI/Windows aux mêmes points de code. Windows n'utilisait pas les codes de contrôle C1, cette décision n'a donc eu aucun effet direct sur les utilisateurs de Windows. Cependant, si elles étaient incluses dans un fichier transféré vers une plate-forme conforme aux normes comme Unix ou MacOS, les informations étaient invisibles et potentiellement perturbatrices.
Page de codes OEM
Les pages de codes OEM ( fabricant d'équipement d'origine ) sont utilisées par les applications de console Win32 et par le DOS virtuel , et peuvent être considérées comme un vestige du DOS et de l' architecture IBM PC d' origine. Une suite distincte de pages de codes a été implémentée non seulement pour des raisons de compatibilité, mais aussi parce que les polices du matériel VGA (et descendant) suggèrent que l'encodage des caractères de dessin au trait est compatible avec la page de codes 437 . La plupart des pages de codes OEM partagent de nombreux points de code, en particulier pour les caractères non alphabétiques, avec la seconde moitié (non ASCII) de CP437.
Une page de codes OEM typique, dans sa seconde moitié, ne ressemble à aucune page de codes ANSI/Windows, même grossièrement. Néanmoins, deux pages de codes à largeur fixe à un octet (874 pour le thaï et 1258 pour le vietnamien ) et quatre pages de codes CJK à plusieurs octets ( 932 , 936 , 949 , 950 ) sont utilisées à la fois comme pages de codes OEM et ANSI. La page de codes 1258 utilise des combinaisons de signes diacritiques , car le vietnamien requiert plus de 128 combinaisons de lettres et de signes diacritiques. Cela contraste avec VISCII , qui remplace certains des codes de contrôle C0 (c'est-à-dire ASCII).
Histoire
Initialement, les systèmes informatiques et les langages de programmation système ne faisaient pas de distinction entre les caractères et les octets : pour les écritures segmentaires utilisées dans la majeure partie de l'Afrique, des Amériques, de l'Asie du Sud et du Sud-Est, du Moyen-Orient et de l'Europe, un caractère n'a besoin que d'un octet. , mais deux octets ou plus sont nécessaires pour les ensembles idéographiques utilisés dans le reste du monde. Cela a conduit à beaucoup de confusion par la suite. Les logiciels et systèmes Microsoft antérieurs à la ligne Windows NT en sont des exemples, car ils utilisent les pages de codes OEM et ANSI qui ne font pas la distinction.
Depuis la fin des années 1990, les logiciels et les systèmes ont adopté Unicode comme format de stockage préféré ; cette tendance a été améliorée par l'adoption généralisée de XML , qui fournit un mécanisme plus adéquat pour étiqueter le codage utilisé. Les produits Microsoft et les interfaces de programmes d'application récents utilisent Unicode en interne, mais de nombreuses applications et API continuent d'utiliser l'encodage par défaut des « paramètres régionaux » de l'ordinateur lors de la lecture et de l'écriture de données texte dans des fichiers ou une sortie standard. Par conséquent, on peut toujours rencontrer des fichiers lisibles et intelligibles dans une partie du monde mais mojibake inintelligibles dans une autre.
UTF-8, UTF-16
Microsoft a décidé d'adopter le système UTF-16 16 bits (deux octets) pour tous ses systèmes d'exploitation à partir de Windows NT. Cette méthode code uniquement tous les caractères Unicode dans le plan multilingue de base et un code 32 bits (quatre octets) pour les autres - mais le reste de l'industrie ( systèmes de type Unix et le Web) a choisi UTF-8 (qui utilise un octet pour le jeu de caractères ASCII 7 bits , deux ou trois octets pour les autres caractères du BMP et quatre octets pour le reste). Depuis Windows 10 version 1803 , les machines Windows peuvent être configurées pour autoriser UTF-8 en tant que page de code "ANSI" et OEM.
Lister
Les pages de codes Windows suivantes existent :
Série Windows-125x
Ces neuf pages de codes sont toutes des encodages SBCS ASCII 8 bits étendus et ont été conçues par Microsoft pour être utilisées comme pages de codes ANSI sous Windows. Ils sont généralement connus sous le nom de windows-<number>
, mais sont aussi parfois appelés cp<number>
, "cp" pour "page de code". Ils sont tous utilisés comme pages de codes ANSI ; Windows-1258 est également utilisé comme page de codes OEM.
La série Windows-125x comprend neuf des pages de codes ANSI et couvre principalement les scripts d' Europe et d' Asie occidentale avec l'ajout du Vietnam . Les encodages système pour le thaï et les langues d' Asie de l'Est ont été numérotés pour correspondre aux pages de codes IBM similaires et sont utilisés à la fois comme pages de codes ANSI et OEM ; ceux-ci sont traités dans les sections suivantes.
identifiant | La description | Relation avec ISO 8859 ou d'autres codages établis |
---|---|---|
1250 | Latin 2 / Europe centrale | Similaire à ISO-8859-2 mais déplace plusieurs caractères, y compris plusieurs lettres. |
1251 | cyrillique | Incompatible avec ISO-8859-5 et KOI-8 . |
1252 | Latin 1 / Europe occidentale | Superset d' ISO-8859-1 (sans contrôles C1). Répertoire de lettres en conséquence similaire à CP850 . |
1253 | grec | Similaire à ISO 8859-7 mais déplace plusieurs caractères, y compris une lettre. |
1254 | turc | Superset d' ISO 8859-9 (sans contrôles C1). |
1255 | hébreu | Presque un sur-ensemble d' ISO 8859-8 , mais avec deux changements de ponctuation incompatibles. |
1256 | arabe | Non compatible avec ISO 8859-6 ; au lieu de cela, la page de code OEM 708 est un sur-ensemble ISO 8859-6 (ASMO 708). |
1257 | baltique | Non ISO 8859-4 ; la dernière ISO 8859-13 est étroitement liée, mais avec quelques différences dans la ponctuation disponible. |
1258 | Vietnamien (également OEM) | Non lié à VSCII ou VISCII , utilise moins de caractères de base avec des signes diacritiques combinés. |
pages de codes DOS
Ceux-ci sont également basés sur ASCII. La plupart d'entre eux sont inclus pour une utilisation en tant que pages de codes OEM ; La page de codes 874 est également utilisée comme page de codes ANSI.
- 437 – IBM PC US, SBCS 8 bits étendu ASCII . Connu sous le nom d'OEM-US, l'encodage de la principale police intégrée des cartes graphiques VGA.
- 708 – Arabe, étendu ISO 8859-6 (ASMO 708)
- 720 - Arabe, en conservant les caractères du dessin de la boîte à leurs emplacements habituels
- 737 - " MS-DOS grec ". Conserve tous les caractères de dessin de boîte. Plus populaire que 869.
- 775 – « Jante baltique MS-DOS »
- 850 - "MS-DOS Latin 1". Répertoire complet (réarrangé) de l' ISO 8859-1 .
- 852 - "MS-DOS Latin 2"
- 855 - "MS-DOS Cyrillique". Principalement utilisé pour les langues slaves du sud . Comprend le répertoire (réarrangé) de la norme ISO-8859-5 . À ne pas confondre avec cp866.
- 857 - " MS-DOS turc "
- 858 - Europe occidentale avec le signe de l'euro
- 860 - "MS-DOS portugais"
- 861 - "MS-DOS islandais"
- 862 - " MS-DOS hébreu "
- 863 - "MS-DOS Canada français"
- 864 – arabe
- 865 - "MS-DOS Nordique"
- 866 - "MS-DOS cyrillique russe", cp866. Seule page de code purement OEM (plutôt que ANSI ou les deux) incluse en tant qu'encodage hérité dans WHATWG Encoding Standard for HTML5 .
- 869 - " MS-DOS grec 2 ", IBM869. Répertoire complet (réarrangé) de l' ISO 8859-7 .
- 874 – Thai , également utilisé comme page de codes ANSI, étend ISO 8859-11 (et donc TIS-620 ) avec quelques caractères supplémentaires de Windows-1252. Correspond à la page de codes IBM 1162 (IBM-874 est similaire mais possède des extensions différentes).
Pages de codes multi-octets d'Asie de l'Est
Celles-ci ne correspondent souvent qu'en partie aux pages de codes IBM du même numéro : les pages de codes 932, 936 et 949 diffèrent des pages de codes IBM du même numéro, alors que Windows-951, dans le cadre d'un kludge , n'est pas lié à IBM-951. Les pages de codes équivalentes IBM sont indiquées dans la deuxième colonne. Les pages de codes 932, 936, 949 et 950/951 sont utilisées à la fois comme pages de codes ANSI et OEM sur les paramètres régionaux en question.
identifiant | Équivalent IBM | Langue | Codage | Utilisation |
---|---|---|---|---|
932 | 943 | Japonais | Shift JIS (variante Microsoft) | ANSI/OEM (Japon) |
936 | 1386 | Chinois simplifié) | GBK | ANSI/OEM (RPC, Singapour) |
949 | 1363 | coréen | Code Hangul unifié | ANSI/OEM (République de Corée) |
950 | 1370, 1373 | Chinois (Traditionnel) | Big5 (variante Microsoft) | ANSI/OEM (Taïwan, Hong Kong) |
951 | 5471 | Chinois (Traditionnel) | Big5-HKSCS (éd. 2001) | ANSI/OEM (Hong Kong, 98/NT4/2000/XP avec correctif HKSCS) |
Quelques autres pages de codes à plusieurs octets sont prises en charge pour le décodage ou l'encodage à l'aide des bibliothèques du système d'exploitation, mais ne sont utilisées comme aucune sorte d'encodage système dans aucun paramètre régional.
identifiant | Équivalent IBM | Langue | Codage | Utilisation |
---|---|---|---|---|
1361 | - | coréen | Johab (KS C 5601-1992 annexe 3) | Conversion |
20000 | 964 | Chinois (Traditionnel) | CNS 11643 | Conversion |
20001 | - | Chinois (Traditionnel) | TCA | Conversion |
20002 | - | Chinois (Traditionnel) | Big5 (variante ETEN) | Conversion |
20003 | ? | Chinois (Traditionnel) | IBM 5500 | Conversion |
20004 | - | Chinois (Traditionnel) | Télétexte | Conversion |
20005 | - | Chinois (Traditionnel) | Wang | Conversion |
20932 , 51932 | 954 (environ) | Japonais | EUC-JP | Conversion |
20936 , 51936 | - | Chinois simplifié) | GB2312 | Conversion |
20949 , 51949 | - | coréen | Wansung (8 bits avec ASCII, c'est -à- dire EUC-KR ) | Conversion |
Pages de codes EBCDIC
- 37 – IBM EBCDIC États-Unis-Canada, SBCS 8 bits
- 500 – Latin 1
- 870 – IBM870
- 875 – cp875
- 1026 – EBCDIC Turc
- 1047 – IBM01047 – Latin 1
- 1140 – IBM01141
- 1141 – IBM01141
- 1142 – IBM01142
- 1143 – IBM01143
- 1144 – IBM01144
- 1145 – IBM01145
- 1146 – IBM01146
- 1147 – IBM01147
- 1148 – IBM01148
- 1149 – IBM01149
- 20273 – EBCDIC Allemagne
- 20277 – EBCDIC Danemark/Norvège
- 20278 – EBCDIC Finlande/Suède
- 20280 – EBCDIC Italie
- 20284 – EBCDIC Amérique latine/Espagne
- 20285 – EBCDIC Royaume-Uni
- 20290 – EBCDIC japonais
- 20297 – EBCDIC France
- 20420 – EBCDIC arabe
- 20423 – EBCDIC grec
- 20424 – x-EBCDIC-KoreanExtended
- 20833 – Coréen
- 20838 – EBCDIC Thaï
- 20924 – IBM00924 – IBM EBCDIC Latin 1/Open System (1047 + symbole Euro)
- 20871 – EBCDIC Islandais
- 20880 – EBCDIC cyrillique
- 20905 – EBCDIC Turc
- 21025 – EBCDIC cyrillique
- 21027 – EBCDIC japonais (incomplet, obsolète)
- 1200 – Unicode (BMP de ISO 10646, UTF-16LE ). Disponible uniquement pour les applications gérées
- 1201 – Unicode ( UTF-16BE ). Disponible uniquement pour les applications gérées
- 12000 – UTF-32 . Disponible uniquement pour les applications gérées
- 12001 – UTF-32 . Gros boutiste. Disponible uniquement pour les applications gérées
- 65000 – Unicode ( UTF-7 )
- 65001 – Unicode ( UTF-8 )
Pages de codes de compatibilité Macintosh
- 10000 – Apple Macintosh Romain
- 10001 – Apple Macintosh japonais
- 10002 – Apple Macintosh chinois (traditionnel) (BIG-5)
- 10003 – Apple Macintosh coréen
- 10004 – Apple Macintosh arabe
- 10005 – Apple Macintosh Hébreu
- 10006 – Apple Macintosh grec
- 10007 – Apple Macintosh cyrillique
- 10008 – Apple Macintosh chinois (simplifié) (GB 2312)
- 10010 – Apple Macintosh roumain
- 10017 – Apple Macintosh ukrainien
- 10021 – Apple Macintosh Thaï
- 10029 – Apple Macintosh Roman II / Europe centrale
- 10079 – Apple Macintosh Islandais
- 10081 – Apple Macintosh Turc
- 10082 – Apple Macintosh croate
Pages de codes ISO 8859
- 28591 – ISO-8859-1 – Latin-1 (équivalent IBM : 819)
- 28592 – ISO-8859-2 – Latin-2
- 28593 – ISO-8859-3 – Latin-3 ou sud-européen
- 28594 – ISO-8859-4 – Latin-4 ou nord-européen
- 28595 – ISO-8859-5 – Latin/Cyrillique
- 28596 – ISO-8859-6 – Latin/Arabe
- 28597 – ISO-8859-7 – Latin/Grec
- 28598 – ISO-8859-8 – Latin/Hébreu
- 28599 – ISO-8859-9 – Latin-5 ou turc
- 28600 – ISO-8859-10 – Latin-6
- 28601 – ISO-8859-11 – Latin/Thaï
- 28602 - ISO-8859-12 - réservé pour Latin/Devanagari mais abandonné (non pris en charge)
- 28603 – ISO-8859-13 – Latin-7 ou Baltic Rim
- 28604 – ISO-8859-14 – Latin-8 ou celtique
- 28605 – ISO-8859-15 – Latin-9
- 28606 – ISO-8859-16 – Latin-10 ou Europe du Sud-Est
- 38596 – ISO-8859-6- I – Latin/Arabe (ordre logique bidirectionnel)
- 38598 – ISO-8859-8- I – Latin/Hébreu (ordre bidirectionnel logique)
Pages de codes UIT-T
Pages de codes KOI8
Problèmes liés à l'utilisation des pages de codes
Microsoft recommande fortement d'utiliser Unicode dans les applications modernes, mais de nombreuses applications ou fichiers de données dépendent toujours des pages de codes héritées.
- Les programmes doivent savoir quelle page de code utiliser pour afficher correctement le contenu des fichiers (pré-Unicode). Si un programme utilise la mauvaise page de code, il peut afficher du texte sous la forme mojibake .
- La page de codes utilisée peut différer d'une machine à l'autre, de sorte que les fichiers (pré-Unicode) créés sur une machine peuvent être illisibles sur une autre.
- Les données sont souvent mal étiquetées avec la page de codes, ou pas étiquetées du tout, ce qui rend difficile la détermination de la page de codes correcte pour lire les données.
- Ces pages de codes Microsoft diffèrent à divers degrés de certaines normes et implémentations d'autres fournisseurs. Ce n'est pas un problème Microsoft en soi , comme cela arrive à tous les fournisseurs, mais le manque de cohérence rend l'interopérabilité avec d'autres systèmes peu fiable dans certains cas.
- L'utilisation de pages de codes limite le jeu de caractères pouvant être utilisé.
- Les caractères exprimés dans une page de codes non prise en charge peuvent être convertis en points d'interrogation (?) ou en d'autres caractères de remplacement , ou en une version plus simple (telle que la suppression des accents d'une lettre). Dans les deux cas, le caractère original peut être perdu.
Voir également
- AppLocale – un utilitaire pour exécuter des applications non Unicode (basées sur des pages de codes) dans les paramètres régionaux du choix de l'utilisateur.
Les références
Liens externes
- Référence de l'API de prise en charge des langues nationales (NLS) . Tableau montrant les pages de codes ANSI et OEM par langue (à partir de l'archive Web depuis que Microsoft a supprimé la page d'origine)
- Enregistrements de noms de jeu de caractères IANA
- Table de mappage Unicode pour les pages de codes Windows
- Mappages Unicode des pages de codes Windows avec « meilleur ajustement »