Unicode
Unicode é um padrão mundial de codificação de caracteres. O sistema usa Unicode exclusivamente para manipulação de caracteres e cadeias de caracteres. Para obter uma descrição detalhada de todos os aspectos do Unicode, consulte oPadrão Unicode.
Em comparação com mecanismos mais antigos para lidar com dados de caractere e cadeia de caracteres, o Unicode simplifica a localização de software e melhora o processamento de texto multilíngue. Usando o Unicode para representar dados de caractere e cadeia de caracteres em seus aplicativos, você pode habilitar recursos universais de troca de dados para marketing global, usando um único arquivo binário para cada código de caractere possível. O Unicode faz o seguinte:
- Permite que qualquer combinação de caracteres, desenhada de qualquer combinação de scripts e idiomas, coexista em um único documento.
- Define semântica para cada caractere.
- Padroniza o comportamento do script.
- Fornece um algoritmo padrão para texto bidirecional.
- Define mapeamentos cruzados para outros padrões.
- Define várias codificações de seu único conjunto de caracteres: UTF-7, UTF-8, UTF-16 e UTF-32. A conversão de dados entre essas codificações não tem perda.
O Unicode dá suporte a vários scripts usados por idiomas ao redor do mundo e também a um grande número de símbolos técnicos e caracteres especiais usados na publicação. Os scripts com suporte incluem, mas não se limitam a latim, grego, cirílico, hebraico, árabe, devanágaro, tailandês, han, hangul, hiragana e katakana. Os idiomas com suporte incluem, mas não se limitam a, alemão, francês, inglês, grego, russo, hebraico, árabe, hindi, tailandês, chinês, coreano e japonês. Atualmente, o Unicode pode representar a grande maioria dos caracteres no uso de computadores modernos em todo o mundo e continua a ser atualizado para torná-lo ainda mais completo.
As funções habilitadas para Unicode são descritas em convenções para protótipos de função. Essas funções usam a codificação UTF-16 (caractere largo), que é a codificação mais comum do Unicode e a usada para codificação Unicode nativa em sistemas operacionais Windows. Cada valor de código tem 16 bits de largura, em contraste com a página de código mais antiga abordagem para dados de caractere e cadeia de caracteres, que usa valores de código de 8 bits. O uso de 16 bits permite a codificação direta de 65.536 caracteres. Na verdade, o universo de símbolos usados para transcrever linguagens humanas é ainda maior do que isso, e os pontos de código UTF-16 no intervalo U+D800 a U+DFFF são usados para formar pares substitutos, que constituem codificações de 32 bits de caracteres suplementares. Consulte substitutos e caracteres suplementares para mais discussão.
O conjunto de caracteres Unicode inclui vários caracteres de combinação, como U+0308 (" ̈"), uma combinação de dieresis ou umlaut. O Unicode geralmente pode representar o mesmo glifo em um formulário ''composto'' ou ''decomposto'': por exemplo, a forma composta de "Ä" é o único ponto de código Unicode "Ä" (U+00C4), enquanto sua forma decomposta é "A" + " ̈" (U+0041 U+0308). O Unicode não define um formulário composto para cada glifo. Por exemplo, a minúscula vietnamita "o" com circunflexo e til ("ỗ") é representada por U+006f U+0302 U+0303 (o + Circumflex + Tilde). Para obter mais discussões sobre como combinar caracteres e problemas relacionados, consulte Usando a Normalização Unicode para representar cadeias de caracteres.
Para compatibilidade com ambientes de 8 bits e 7 bits, o Unicode também pode ser codificado como UTF-8 e UTF-7, respectivamente. Embora as funções habilitadas para Unicode no Windows usem UTF-16, também é possível trabalhar com dados codificados em UTF-8 ou UTF-7, que têm suporte no Windows como conjunto de caracteres multibyte páginas de código.
Os novos aplicativos do Windows devem usar o UTF-16 como representação de dados interna. O Windows também fornece amplo suporte para páginas de código e o uso misto no mesmo aplicativo é possível. Até mesmo novos aplicativos baseados em Unicode às vezes precisam trabalhar com páginas de código. Os motivos para isso são discutidos nas páginas de código .
Um aplicativo pode usar as funçõesMultiByteToWideChar eWideCharToMultiByte para converter entre cadeias de caracteres com base em páginas de código e cadeias de caracteres Unicode. Embora seus nomes se refiram a "MultiByte", essas funções funcionam igualmente bem com conjunto de caracteres de byte único (SBCS), conjunto de caracteres de byte duplo (DBCS) e páginas de código MBCS (conjunto de caracteres multibyte).
Normalmente, um aplicativo do Windows deve usar UTF-16 internamente, convertendo apenas como parte de uma "camada fina" na interface que deve usar outro formato. Essa técnica defende a perda e a corrupção de dados. Cada página de código dá suporte a caracteres diferentes, mas nenhum deles dá suporte ao espectro completo de caracteres fornecidos pelo Unicode. A maioria das páginas de código dá suporte a subconjuntos diferentes, codificados de forma diferente. As páginas de código para UTF-8 e UTF-7 são uma exceção, pois dão suporte ao conjunto de caracteres Unicode completo e a conversão entre essas codificações e UTF-16 não tem perda.
Os dados convertidos diretamente da codificação usada por uma página de código para a codificação usada por outro estão sujeitos a corrupção, pois o mesmo valor de dados em diferentes páginas de código pode codificar um caractere diferente. Mesmo quando seu aplicativo estiver convertendo o mais próximo possível da interface, você deve pensar cuidadosamente sobre o intervalo de dados a serem manipulados.
Os dados convertidos de Unicode em uma página de código 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. Portanto, observe que WideCharToMultiByte poderá perder alguns dados se a página de código de destino não puder representar todos os caracteres na cadeia de caracteres Unicode.
Ao modernizar aplicativos herdados baseados em página de código para usar o Unicode, você pode usar funções genéricas e a macro TEXT para manter um único conjunto de fontes das quais compilar duas versões do seu aplicativo. Uma versão dá suporte ao Unicode e a outra funciona com páginas de código do Windows. Usando esse mecanismo, você pode converter até mesmo aplicativos muito grandes de páginas de código do Windows em Unicode, mantendo fontes de aplicativo que podem ser compiladas, criadas e testadas em todas as fases da conversão. Para obter mais informações, consulte Conventions for Function Prototypes.
Caracteres unicode e cadeias de caracteres usam tipos de dados distintos daqueles para caracteres e cadeias de caracteres baseados em página de código. Junto com uma série de macros e convenções de nomenclatura, essa distinção minimiza a chance de misturar acidentalmente os dois tipos de dados de caractere. Ele facilita a verificação de tipo do compilador para garantir que apenas valores de parâmetro Unicode sejam usados com funções que esperam cadeias de caracteres Unicode.
Tópicos relacionados