Páginas de código

A maioria dos aplicativos gravados atualmente trata os dados de caracteres principalmente como Unicode, usando a codificação UTF-16. No entanto, muitos aplicativos herdados continuam a usar conjuntos de caracteres com base em páginas de código. Até mesmo novos aplicativos às vezes precisam trabalhar com páginas de código, muitas vezes por um dos seguintes motivos:

  • Para se comunicar com aplicativos herdados.
  • Para se comunicar com servidores de email e notícias mais antigos, que podem nem sempre dar suporte ao Unicode.
  • Para se comunicar com o Console Windows para fins herdados. (O console dá suporte ao Unicode, mas algumas ferramentas de aplicativo de linha de comando herdadas podem não.)

Observação

Novos aplicativos de Windows devem usar o Unicode para evitar as inconsistências de páginas de código variadas e para facilitar a localização.

 

Cada página de código é representada por um identificador de página de código, por exemplo, 1252, e é manipulada pelas funções de API unicode e conjunto de caracteres. Para obter uma lista de identificadores de página de código com suporte, consulte Identificadores de Página de Código. A referência "Páginas de Código" no Centro de Desenvolvedores Global do Microsoft Go fornece descrições completas de muitas páginas de código.

Windows páginas de código, normalmente chamadas de "páginas de código ANSI", são páginas de código para as quais valores não ASCII (valores maiores que 127) representam caracteres internacionais. Essas páginas de código são usadas nativamente no Windows Me e também estão disponíveis em Windows NT e posteriores.

Observação

Originalmente, Windows página de código 1252, a página de código comumente usada para inglês e outros idiomas da Europa Ocidental, foi baseada em um rascunho do ANSI (American National Standards Institute). Esse rascunho acabou se tornando ISO 8859-1, mas Windows página de código 1252 foi implementada antes do padrão se tornar final, e não é exatamente o mesmo que ISO 8859-1.

 

Muitas Windows funções de API têm versões "A" (ANSI) e "W" (wide, Unicode). A versão "A" manipula o texto com base em Windows páginas de código, enquanto a versão "W" manipula o texto Unicode. Consulte Windows tipos de dados para cadeias de caracteres e convenções para protótipos de função.

Windows páginas de código também são às vezes chamadas de "páginas de código ativas" ou "páginas de código ativo do sistema". Um sistema operacional Windows sempre tem uma página de código Windows ativa no momento. Todas as versões ANSI das funções de API usam a página de código atualmente ativa.

As páginas de código OEM (fabricante de equipamento original) são páginas de código para as quais valores não ASCII representam caracteres de desenho e pontuação de linha. Essas páginas de código foram originalmente usadas para MS-DOS e ainda são usadas para aplicativos de console. Eles também são usados para os nomes de arquivo não estendidos nos sistemas de arquivos FAT12, FAT16 e FAT32, conforme descrito em conjuntos de caracteres usados em nomes de arquivo. A página de código OEM usual para inglês é a página de código 437.

Para páginas de código Windows e páginas de código OEM, os valores de código 0x00 por meio de 0x7F correspondem ao conjunto de caracteres ASCII de 7 bits. Os valores de código 0x00 por meio de 0x19 e 0x7F sempre representam caracteres de controle padronizados e 0x20 por meio de 0x7E representam caracteres exibicionáveis padronizados. Os caracteres representados pelos códigos restantes, 0x80 por meio de 0xff, variam entre os conjuntos de caracteres. Cada conjunto de caracteres inclui caracteres especiais diferentes, normalmente personalizados para um idioma ou grupo de idiomas. Windows página de código 1252 e a página de código OEM 437 são geralmente usadas no Estados Unidos.

Além de Windows e páginas de código OEM, seus aplicativos podem usar páginas de código não nativas. Exemplos são páginas de código EBCDIC e Macintosh.

Duas codificações de Unicode (UTF-7 e UTF-8) são implementadas como páginas de código. Como outras páginas de código, cada página é conhecida por um identificador numérico e pode ser tratada com muitas das mesmas funções de API de conjunto de caracteres e Unicode.

As páginas de código podem ser páginas SBCS ( conjunto de caracteres de byte único ) ou páginas DBCS ( conjunto de caracteres de byte duplo ). Nas páginas do SBCS, cada byte codifica diretamente um único caractere, para que seja possível representar exatamente 256 caracteres distintos (incluindo caracteres de controle, letras, dígitos, pontuação, símbolos e similares). As páginas de código DBCS são usadas para idiomas como japonês e chinês. Nessa página de código, alguns caracteres têm codificações de dois bytes com determinados valores de bytes (valores sempre maiores que 127) que servem como "bytes de chumbo". Em vez de codificar caracteres em seu próprio direito, bytes de chumbo podem ser mapeados para um caractere apenas em conjunto com um "byte de trilha".

Alguns protocolos herdados exigem o uso de páginas de código SBCS e DBCS. Cada página de código SBCS/DBCS dá suporte a caracteres diferentes, mas nenhuma página de código dá suporte à amplitude completa dos caracteres fornecidos pelo Unicode. Cada página de código SBCS/DBCS dá suporte a um subconjunto diferente, codificado de forma diferente.

Observação

Os dados convertidos de uma página de código SBCS ou DBCS para outra estão sujeitos a corrupção, pois o mesmo valor de dados em páginas de código diferentes pode codificar um caractere diferente. Os dados convertidos do Unicode para SBCS ou DBCS estão sujeitos à perda de dados, pois uma determinada página de código pode não ser capaz de representar todos os caracteres usados nesses dados Unicode específicos.

 

Além das páginas de código SBCS e DBCS, seus aplicativos disponibilizaram as páginas de código de conjunto de caracteres multibyte 52936, 54936, 51949 e 5022x, que usam uma abordagem semelhante à de um DBCS. No entanto, uma página de código de conjunto de caracteres de váriosbytes vai além das codificações de dois bytes de alguns caracteres. UTF-7 e UTF-8 usam uma abordagem semelhante para codificar Unicode com base em um bytes de 7 bits e 8 bits, respectivamente. Para obter mais informações, consulte Unicode.

Várias funções unicode e conjunto de caracteres permitem que seus aplicativos manipulem páginas de código. Um aplicativo pode usar as funções GetCPInfo e GetCPInfoEx para obter informações sobre uma página de código. Essas informações incluem o caractere padrão usado quando um caractere em uma cadeia de caracteres convertida não tem nenhuma entrada correspondente na página de código.

Um aplicativo pode usar as funções MultiByteToWideChar e WideCharToMultiByte para converter entre cadeias de caracteres com base em Windows páginas de código e cadeias de caracteres Unicode. Embora seus nomes se refiram a "MultiByte", essas funções funcionam igualmente bem com páginas de código de conjunto de caracteres SBCS, DBCS e multibyte.

Observação

WideCharToMultiByte poderá perder alguns dados se a página de código fornecida não puder representar todos os caracteres em uma cadeia de caracteres Unicode.

 

Seu aplicativo pode converter entre Windows páginas de código e páginas de código OEM usando as funções padrão da biblioteca de runtime C. No entanto, o uso dessas funções apresenta um risco de perda de dados porque os caracteres que podem ser representados por cada página de código não correspondem exatamente.

Seus aplicativos também podem chamar a função GetACP . Essa função recupera o identificador da página de código ANSI (Windows) atual.

Conjuntos de caracteres