Partilhar via


Páginas de código

A maioria dos aplicativos escritos hoje lida com 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. Mesmo novos aplicativos às vezes têm que trabalhar com páginas de código, muitas vezes por um dos seguintes motivos:

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

Observação

Novos aplicativos do Windows devem usar 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 Unicode e API do conjunto de caracteres. Para obter uma lista de identificadores de página de código suportados, consulte Identificadores de página de código. A referência "Páginas de código" no Microsoft Go Global Developer Center fornece descrições completas de muitas páginas de código.

As páginas de código do Windows, comumente 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 no Windows NT e posterior.

Observação

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

 

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

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

As páginas de código do fabricante do equipamento original (OEM) são páginas de código para as quais os valores não-ASCII representam caracteres de desenho de linha e pontuação. 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 do Windows e páginas de código OEM, os valores de código 0x00 a 0x7F correspondem ao conjunto de caracteres ASCII de 7 bits. Os valores de código 0x00 através 0x19 e 0x7F sempre representam caracteres de controle padronizados e 0x20 através 0x7E representam caracteres padronizados exibiveis. Os caracteres representados pelos códigos restantes, 0x80 a 0xff, variam entre os conjuntos de caracteres. Cada conjunto de caracteres inclui diferentes caracteres especiais, normalmente personalizados para um idioma ou grupo de idiomas. A página de código do Windows 1252 e a página de código OEM 437 são geralmente usadas nos Estados Unidos.

Além das páginas de código do Windows e 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 manipulada com muitas das mesmas funções Unicode e API de conjunto de caracteres.

As páginas de código podem ser páginas de conjunto de caracteres de byte único (SBCS) ou páginas de conjunto de caracteres de byte duplo (DBCS). Nas páginas SBCS, cada byte codifica diretamente um único caractere, de modo que é 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. Em tal página de código, alguns caracteres têm codificações de dois bytes com certos valores de byte (sempre valores maiores que 127) servindo como "bytes principais". Em vez de codificar caracteres por si só, os bytes principais podem ser mapeados para um caractere apenas em conjunto com um "byte de trilha".

Alguns protocolos herdados requerem o uso de páginas de código SBCS e DBCS. Cada página de código SBCS/DBCS suporta caracteres diferentes, mas nenhuma página de código suporta toda a amplitude de caracteres fornecida pelo Unicode. Cada página de código SBCS/DBCS suporta 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, porque o mesmo valor de dados em páginas de código diferentes pode codificar um caractere diferente. Os dados convertidos de Unicode para SBCS ou DBCS estão sujeitos a perda de dados, porque 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 têm disponíveis 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 multibyte 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 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 o GetCPInfo e funções 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 o MultiByteToWideChar e funções de WideCharToMultiByte para converter entre cadeias de caracteres baseadas em páginas de código do Windows e cadeias de caracteres Unicode. Embora seus nomes se refiram a "MultiByte", essas funções funcionam igualmente bem com SBCS, DBCS e páginas de código de conjunto de caracteres multibyte.

Observação

WideCharToMultiByte pode 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 páginas de código do Windows e páginas de código OEM usando as funções padrão da biblioteca de tempo de execução 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çãoGetACP. Esta função recupera o identificador da página de código atual do Windows (ANSI).

Conjuntos de caracteres