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

Série Windows-125x
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 :

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)

Pages de codes liées à Unicode

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

Pages de codes UIT-T

Pages de codes KOI8

  • 20866 – Russe – KOI8-R
  • 21866 - Ukrainien - KOI8-U (ou KOI8-RU dans certaines versions)

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