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
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:
- Superconjuntos dos conjuntos de padrões, como os do ISO 8859 e os vários padrões nacionais (como Windows-1252 vs. ISO-8859-1 ),
- Principais modificações destes (tornando-os incompatíveis em vários graus, como Windows-1250 vs. ISO-8859-2 )
- Sem codificação paralela (como Windows-1257 vs. ISO-8859-4 ; ISO-8859-13 foi introduzido muito mais tarde). Além disso, o Windows-1251 não segue o padrão ISO-8859-5 nem o KOI-8 então vigente .
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)
- 1200 - Unicode (BMP de ISO 10646, UTF-16LE ). Disponível apenas para aplicativos gerenciados
- 1201 - Unicode ( UTF-16BE ). Disponível apenas para aplicativos gerenciados
- 12000 - UTF-32 . Disponível apenas para aplicativos gerenciados
- 12001 - UTF-32 . Big-endian. Disponível apenas para aplicativos gerenciados
- 65000 - Unicode ( UTF-7 )
- 65001 - Unicode ( UTF-8 )
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
- 28591 - ISO-8859-1 - Latin-1 (equivalente IBM: 819)
- 28592 - ISO-8859-2 - Latin-2
- 28593 - ISO-8859-3 - Latin-3 ou Sul da Europa
- 28594 - ISO-8859-4 - Latin-4 ou Norte da Europa
- 28595 - ISO-8859-5 - latino / cirílico
- 28596 - ISO-8859-6 - Latim / Árabe
- 28597 - ISO-8859-7 - Latim / Grego
- 28598 - ISO-8859-8 - latim / hebraico
- 28599 - ISO-8859-9 - Latin-5 ou turco
- 28600 - ISO-8859-10 - Latin-6
- 28601 - ISO-8859-11 - Latim / Tailandês
- 28602 - ISO-8859-12 - reservado para latim / devanágari, mas abandonado (não compatível)
- 28603 - ISO-8859-13 - Latin-7 ou Baltic Rim
- 28604 - ISO-8859-14 - Latin-8 ou Celta
- 28605 - ISO-8859-15 - Latin-9
- 28606 - ISO-8859-16 - Latin-10 ou Sudeste Europeu
- 38596 - ISO-8859-6- I - Latim / Árabe (ordem bidirecional lógica)
- 38598 - ISO-8859-8- I - Latim / Hebraico (ordem bidirecional lógica)
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
- Referência da API do National Language Support (NLS) . Tabela mostrando páginas de código ANSI e OEM por idioma (do arquivo da web desde que a Microsoft removeu a página original)
- Registros de nomes de conjuntos de caracteres da IANA
- Tabela de mapeamento Unicode para páginas de código do Windows
- Mapeamentos Unicode de páginas de código do Windows com "melhor ajuste"