Página de código do Windows - Windows code page

As páginas de código do Windows são conjuntos de caracteres ou páginas de código (conhecidas como codificações de caracteres em outros sistemas operacionais) usados ​​no Microsoft Windows nas décadas de 1980 e 1990. As páginas de código do Windows foram gradualmente substituídas quando o Unicode foi implementado no Windows , embora ainda tenham suporte no Windows e em outras plataformas, e ainda se aplicam quando os atalhos de código Alt são usados.

Existem dois grupos de páginas de código do sistema em sistemas Windows: páginas de código OEM e nativas do Windows ("ANSI"). As páginas de código em ambos os grupos são páginas de código ASCII estendidas . Páginas de código adicionais são suportadas por rotinas de conversão padrão do Windows, mas não são usadas como nenhum tipo de página de código do sistema.

Página de código ANSI

Windows-125x series
Apelido) ANSI (nome impróprio)
Padrão Padrão de codificação WHATWG
Estende US-ASCII
Precedido por ISO 8859
Sucedido por Unicode
UTF-16 (na API Win32)

As páginas de código ANSI (oficialmente chamadas de "páginas de código do Windows" depois que a Microsoft aceitou o termo anterior como um nome impróprio) são usadas para aplicativos nativos não Unicode (digamos, orientados a bytes ) usando uma interface gráfica do usuário em sistemas Windows. O termo "ANSI" é um nome impróprio porque essas páginas de código do Windows não estão em conformidade com nenhum padrão ANSI ; a página de código 1252 foi baseada em um primeiro rascunho ANSI que se tornou o padrão internacional ISO 8859-1 , que adiciona mais 32 códigos de controle e espaço para 96 ​​caracteres imprimíveis. Entre outras diferenças, as páginas de código do Windows alocam caracteres imprimíveis para o espaço de código de controle suplementar, tornando-os, na melhor das hipóteses, ilegíveis para sistemas operacionais em conformidade com os padrões.)

A maioria das páginas de código "ANSI" legadas tem números de página de código no padrão 125x. No entanto, 874 (tailandês) e as páginas de código "ANSI" multibyte do Leste Asiático ( 932 , 936 , 949 , 950 ), todas as quais também são usadas como páginas de código OEM, são numeradas para corresponder a semelhantes (mas não idênticos) IBM codificações. Embora a página de código 1258 também seja usada como uma página de código OEM, ela é original da Microsoft, e não uma extensão de uma codificação existente. A IBM atribuiu seus próprios números diferentes para as variantes da Microsoft, que são fornecidos para referência nas listas abaixo, quando aplicável.

Todas as páginas de código 125x do Windows, bem como 874 e 936, são rotuladas pela Internet Assigned Numbers Authority (IANA) como " número do Windows ", embora "Windows-936" seja tratado como sinônimo de " GBK ". A página de código 932 do Windows é rotulada como "Windows-31J".

As páginas de código ANSI do Windows e, especialmente, a página de código 1252 , eram assim chamadas porque eram supostamente baseadas em rascunhos enviados ou destinados a ANSI. No entanto, ANSI e ISO não padronizaram nenhuma dessas páginas de código. Em vez disso, eles são:

A Microsoft atribuiu cerca de doze dos caracteres tipográficos e comerciais (incluindo, notavelmente, o símbolo do euro , €) no CP1252 aos pontos de código 0x80–0x9F que, no ISO 8859, são atribuídos aos códigos de controle C1 . Essas atribuições também estão presentes em muitas outras páginas de código ANSI / Windows nos mesmos pontos de código. O Windows não usou os códigos de controle C1, portanto, essa decisão não teve efeito direto sobre os usuários do Windows. No entanto, se incluído em um arquivo transferido para uma plataforma compatível com os padrões, como Unix ou MacOS, as informações eram invisíveis e potencialmente perturbadoras.

Página de código OEM

As páginas de código OEM ( fabricante original do equipamento ) são usadas pelos aplicativos de console Win32 e pelo DOS virtual e podem ser consideradas remanescentes do DOS e da arquitetura original do IBM PC . Um conjunto separado de páginas de código foi implementado não apenas devido à compatibilidade, mas também porque as fontes do hardware VGA (e descendente) sugerem a codificação de caracteres de desenho de linha para serem compatíveis com a página de código 437 . A maioria das páginas de código OEM compartilha muitos pontos de código, especialmente para caracteres que não são letras, com a segunda metade (não ASCII) do CP437.

Uma página de código OEM típica, em sua segunda metade, não se assemelha a nenhuma página de código ANSI / Windows nem mesmo aproximadamente. No entanto, duas páginas de código de largura fixa de byte único (874 para tailandês e 1258 para vietnamita ) e quatro páginas de código CJK multibyte ( 932 , 936 , 949 , 950 ) são usadas como páginas de código OEM e ANSI. A página de código 1258 usa combinação de diacríticos , já que o vietnamita requer mais de 128 combinações de letras diacríticas. Isso está em contraste com VISCII , que substitui alguns dos códigos de controle C0 (isto é, ASCII).

História

Inicialmente, os sistemas de computador e as linguagens de programação de sistema não faziam distinção entre caracteres e bytes : para os scripts segmentais usados ​​na maior parte da África, Américas, sul e sudeste da Ásia, Oriente Médio e Europa, um caractere precisa de apenas um byte , mas dois ou mais bytes são necessários para os conjuntos ideográficos usados ​​no resto do mundo. Isso levou a muita confusão posteriormente. O software e os sistemas da Microsoft anteriores à linha Windows NT são exemplos disso, porque eles usam as páginas de código OEM e ANSI que não fazem a distinção.

Desde o final da década de 1990, software e sistemas adotaram Unicode como seu formato de armazenamento preferido; essa tendência foi aprimorada com a adoção generalizada do XML , que fornece um mecanismo mais adequado para rotular a codificação usada. Produtos recentes da Microsoft e interfaces de programas de aplicativos usam Unicode internamente, mas muitos aplicativos e APIs continuam a usar a codificação padrão da 'localidade' do computador ao ler e gravar dados de texto em arquivos ou saída padrão. Portanto, ainda podem ser encontrados arquivos legíveis e inteligíveis em uma parte do mundo, mas mojibake ininteligível em outra.

UTF-8, UTF-16

A Microsoft decidiu adotar o sistema UTF-16 de 16 bits (dois bytes) para todos os seus sistemas operacionais a partir do Windows NT. Este método codifica exclusivamente todos os caracteres Unicode no plano multilíngue básico e um código de 32 bits (quatro bytes) para outros - mas o resto da indústria ( sistemas semelhantes ao Unix e a web) escolheu UTF-8 (que usa um byte para o conjunto de caracteres ASCII de 7 bits , dois ou três bytes para outros caracteres no BMP e quatro bytes para o restante). Desde o Windows 10 versão 1803 , as máquinas Windows podem ser configuradas para permitir UTF-8 como a página de código "ANSI" e OEM.

Lista

Existem as seguintes páginas de código do Windows:

Windows-125x series

Essas nove páginas de código são todas codificações SBCS de 8 bits ASCII estendidas e foram projetadas pela Microsoft para uso como páginas de código ANSI no Windows. Eles são comumente conhecidos por seus nomes registrados na IANA como , mas às vezes também são chamados de "cp" para "página de código". Todos eles são usados ​​como páginas de código ANSI; Windows-1258 também é usado como uma página de código OEM. windows-<number>cp<number>

A série Windows-125x inclui nove das páginas de código ANSI e cobre principalmente scripts da Europa e da Ásia Ocidental, com a adição do Vietnã . As codificações do sistema para os idiomas tailandês e do leste asiático foram numeradas para corresponder às páginas de código IBM semelhantes e são usadas como páginas de código ANSI e OEM; estes são abordados nas seções a seguir.

EU IRIA Descrição Relação com a ISO 8859 ou outras codificações estabelecidas
1250 Latim  2 / Europa Central Semelhante ao ISO-8859-2, mas move vários caracteres, incluindo várias letras.
1251 cirílico Incompatível com ISO-8859-5 e KOI-8 .
1252 Latim 1 / Europa Ocidental Superconjunto de ISO-8859-1 (sem controles C1). Repertório de letras similar ao CP850 .
1253 grego Semelhante ao ISO 8859-7, mas move vários caracteres, incluindo uma letra.
1254 turco Superconjunto de ISO 8859-9 (sem controles C1).
1255 hebraico Quase um superconjunto do ISO 8859-8 , mas com duas alterações de pontuação incompatíveis.
1256 árabe Não compatível com ISO 8859-6 ; em vez disso, a página de código OEM 708 é um superconjunto ISO 8859-6 (ASMO 708).
1257 báltico Não ISO 8859-4 ; a última ISO 8859-13 está intimamente relacionada, mas com algumas diferenças na pontuação disponível.
1258 Vietnamita (também OEM) Não relacionado a VSCII ou VISCII , usa menos caracteres básicos com combinação de diacríticos.

Páginas de código DOS

Eles também são baseados em ASCII. A maioria deles está incluída para uso como páginas de código OEM; a página de código 874 também é usada como uma página de código ANSI.

  • 437  - IBM PC US, ASCII estendido SBCS de 8 bits . Conhecida como OEM-US, a codificação da fonte interna primária das placas de vídeo VGA.
  • 708  - Árabe, ISO 8859-6 estendido (ASMO 708)
  • 720  - Árabe, mantendo os caracteres de desenho de caixa em seus locais habituais
  • 737  - "MS-DOS grego". Retém todos os caracteres de desenho de caixa. Mais popular do que 869.
  • 775  - "MS-DOS Baltic Rim"
  • 850  - "MS-DOS Latin 1". Repertório completo (reorganizado) de ISO 8859-1 .
  • 852  - "MS-DOS Latin 2"
  • 855  - "Cirílico MS-DOS". Usado principalmente para línguas eslavas do sul . Inclui repertório (reorganizado) de ISO-8859-5 . Não deve ser confundido com cp866.
  • 857  - "MS-DOS Turco"
  • 858  - Europa Ocidental com símbolo do euro
  • 860  - "MS-DOS Português"
  • 861  - "MS-DOS Islandês"
  • 862  - "MS-DOS hebraico"
  • 863  - "MS-DOS Francês Canadá"
  • 864  - árabe
  • 865  - "MS-DOS Nordic"
  • 866  - "Russo cirílico do MS-DOS", cp866. Única página de código puramente OEM (em vez de ANSI ou ambos) incluída como uma codificação legada no Padrão de Codificação WHATWG para HTML5 .
  • 869  - "MS-DOS Greek 2", IBM869. Repertório completo (reorganizado) de ISO 8859-7 .
  • 874  - Tailandês , também usado como página de código ANSI, estende ISO 8859-11 (e, portanto, TIS-620 ) com alguns caracteres adicionais do Windows-1252. Corresponde à página de código IBM 1162 (IBM-874 é semelhante, mas tem extensões diferentes).

Páginas de código multibyte do Leste Asiático

Freqüentemente, elas correspondem apenas parcialmente às páginas de código da IBM com o mesmo número: as páginas de código 932, 936 e 949 diferem das páginas de código da IBM com o mesmo número, enquanto o Windows-951, como parte de um kludge , não está relacionado ao IBM-951. As páginas de código equivalentes da IBM são fornecidas na segunda coluna. As páginas de código 932, 936, 949 e 950/951 são usadas como páginas de código ANSI e OEM nas localidades em questão.

EU IRIA IBM Equivalent Língua Codificação Usar
932 943 japonês Shift JIS (variante da Microsoft) ANSI / OEM (Japão)
936 1386 Chinês simplificado) GBK ANSI / OEM (PRC, Cingapura)
949 1363 coreano Código Hangul Unificado ANSI / OEM (República da Coréia)
950 1370, 1373 Chinês tradicional) Big5 (variante da Microsoft) ANSI / OEM (Taiwan, Hong Kong)
951 5471 Chinês tradicional) Big5-HKSCS (ed. 2001) ANSI / OEM (Hong Kong, 98 / NT4 / 2000 / XP com patch HKSCS)

Algumas outras páginas de código de bytes múltiplos são suportadas para decodificação ou codificação usando bibliotecas de sistema operacional, mas não são usadas como nenhum tipo de codificação de sistema em qualquer localidade.

EU IRIA IBM Equivalent Língua Codificação Usar
1361 - coreano Johab (KS C 5601-1992 anexo 3) Conversão
20.000 964 Chinês tradicional) CNS 11643 Conversão
20001 - Chinês tradicional) TCA Conversão
20002 - Chinês tradicional) Big5 (variante ETEN) Conversão
20003 ? Chinês tradicional) IBM 5500 Conversão
20004 - Chinês tradicional) Teletexto Conversão
20005 - Chinês tradicional) Wang Conversão
20932 , 51932 954 (aproximadamente) japonês EUC-JP Conversão
20936 , 51936 - Chinês simplificado) GB2312 Conversão
20949 , 51949 - coreano Wansung (8 bits com ASCII, ou seja, EUC-KR ) Conversão

Páginas de código EBCDIC

  • 37 - IBM EBCDIC EUA-Canadá, SBCS de 8 bits
  • 500 - Latim 1
  • 870 - IBM870
  • 875 - cp875
  • 1026 - EBCDIC turco
  • 1047 - IBM01047 - Latim 1
  • 1140 - IBM01141
  • 1141 - IBM01141
  • 1142 - IBM01142
  • 1143 - IBM01143
  • 1144 - IBM01144
  • 1145 - IBM01145
  • 1146 - IBM01146
  • 1147 - IBM01147
  • 1148 - IBM01148
  • 1149 - IBM01149
  • 20273  - EBCDIC Alemanha
  • 20277  - EBCDIC Dinamarca / Noruega
  • 20278  - EBCDIC Finlândia / Suécia
  • 20280  - EBCDIC Itália
  • 20284  - EBCDIC América Latina / Espanha
  • 20285  - EBCDIC Reino Unido
  • 20290  - EBCDIC japonês
  • 20297  - EBCDIC França
  • 20420  - EBCDIC árabe
  • 20423  - EBCDIC grego
  • 20424  - x-EBCDIC-KoreanExtended
  • 20833  - coreano
  • 20838  - EBCDIC tailandês
  • 20924 - IBM00924 - IBM EBCDIC Latin 1 / Sistema aberto (1047 + símbolo do Euro)
  • 20871  - EBCDIC islandês
  • 20880  - EBCDIC cirílico
  • 20905  - EBCDIC turco
  • 21025 - EBCDIC cirílico
  • 21027  - EBCDIC japonês (incompleto, obsoleto)

Páginas de código relacionadas a Unicode

Páginas de código de compatibilidade com Macintosh

  • 10000  - Apple Macintosh Roman
  • 10001  - Apple Macintosh Japonês
  • 10002  - Apple Macintosh Chinês (tradicional) (BIG-5)
  • 10003  - Apple Macintosh coreano
  • 10004  - árabe Apple Macintosh
  • 10005  - Hebraico Apple Macintosh
  • 10006  - Apple Macintosh grego
  • 10007  - Cirílico Apple Macintosh
  • 10008  - Apple Macintosh Chinês (simplificado) (GB 2312)
  • 10010  - Apple Macintosh Romeno
  • 10017  - ucraniano Apple Macintosh
  • 10021  - Apple Macintosh tailandês
  • 10029  - Apple Macintosh Roman II / Europa Central
  • 10079  - Apple Macintosh islandês
  • 10081  - Apple Macintosh Turco
  • 10082  - Apple Macintosh Croata

Páginas de código ISO 8859

Páginas de código ITU-T

Páginas de código KOI8

Problemas decorrentes do uso de páginas de código

A Microsoft recomenda enfaticamente o uso de Unicode em aplicativos modernos, mas muitos aplicativos ou arquivos de dados ainda dependem das páginas de código herdadas.

  • Os programas precisam saber qual página de código usar para exibir o conteúdo dos arquivos (pré-Unicode) corretamente. Se um programa usa a página de código errada, ele pode mostrar o texto como mojibake .
  • A página de código em uso pode ser diferente entre as máquinas, portanto, os arquivos (pré-Unicode) criados em uma máquina podem ser ilegíveis em outra.
  • Os dados costumam ser marcados incorretamente com a página de código, ou nem mesmo marcados, dificultando a determinação da página de código correta para ler os dados.
  • Essas páginas de código da Microsoft diferem em vários graus de alguns dos padrões e implementações de outros fornecedores. Este não é um problema da Microsoft em si , como acontece com todos os fornecedores, mas a falta de consistência torna a interoperabilidade com outros sistemas não confiável em alguns casos.
  • O uso de páginas de código limita o conjunto de caracteres que podem ser usados.
  • Os caracteres expressos em uma página de código sem suporte podem ser convertidos em pontos de interrogação (?) Ou outros caracteres de substituição ou em uma versão mais simples (como remover acentos de uma letra). Em ambos os casos, o personagem original pode ser perdido.

Veja também

  • AppLocale  - um utilitário para executar aplicativos não Unicode (baseados em página de código) em um local de escolha do usuário.

Referências

links externos