Partilhar via


Conjuntos de caracteres de byte duplo

Um conjunto de caracteres de byte duplo (DBCS), também conhecido como um "conjunto de caracteres expandido de 8 bits", é um conjunto de caracteres estendido de byte único (SBCS), implementado como uma página de código. Os DBCSs foram originalmente desenvolvidos para estender o design do SBCS para lidar com idiomas como japonês e chinês. Alguns caracteres em um DBCS, incluindo os dígitos e letras usados para escrever inglês, têm valores de código de byte único. Outros caracteres, como ideógrafos chineses ou kanji japoneses, têm valores de código de byte duplo. Um DBCS pode corresponder a uma página de código do Windows ou a uma página de código OEM. Uma página de código DBCS também pode incluir uma página de código não nativa, por exemplo, uma página de código EBCDIC. Para obter definições dessas páginas de código, consulte Code Pages.

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. No entanto, alguns protocolos herdados podem exigir o uso de páginas de código DBCS. Cada página de código DBCS suporta caracteres diferentes, mas nenhuma página suporta toda a amplitude de caracteres fornecida pelo Unicode. Cada página de código DBCS suporta um subconjunto diferente, codificado de forma diferente. Os dados convertidos de uma página de código 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 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.

 

Para interpretar uma cadeia de caracteres DBCS, um aplicativo deve começar no início da cadeia de caracteres e fazer a varredura para frente. Ele mantém o controle quando encontra um byte principal na cadeia de caracteres e trata o próximo byte como a parte à direita do mesmo caractere. Se o aplicativo simplesmente verifica a cadeia de caracteres um byte de cada vez e encontra um byte que parece ser o valor de código que representa uma barra invertida ("\"), esse byte pode ser simplesmente o byte de trilha de um caractere de dois bytes. O aplicativo não pode simplesmente fazer backup de um byte para ver se o byte anterior é um byte principal, pois esse valor de byte pode ser elegível para ser usado como um byte principal e um byte de trilha. Assim, o aplicativo tem essencialmente o mesmo problema com ele como com a possível barra invertida. Em outras palavras, as pesquisas de substring são muito mais complicadas com um DBCS do que com SBCSs ou Unicode. Assim, os aplicativos que suportam um DBCS devem usar funções especiais, como _mbsstr, em vez da funçãoStrStr.

Seus aplicativos usam páginas de código DBCS do Windows com as versões "A" das funções do Windows. Consulte convenções para protótipos de função e páginas de código. Para ajudar a identificar uma página de código DBCS, um aplicativo pode usar o GetCPInfo ou função GetCPInfoEx. Um aplicativo pode usar a função IsDBCSLeadByte para determinar se um determinado valor pode ser usado como o byte principal de um caractere de 2 bytes. Além disso, um aplicativo pode usar o MultiByteToWideChar e funções de WideCharToMultiByte para mapear entre cadeias de caracteres Unicode e DBCS.

Conjuntos de caracteres

conjuntos de caracteres de byte único