Unicode
Unicode é um padrão mundial de codificação de caracteres. O sistema usa Unicode exclusivamente para manipulação de caracteres e strings. Para obter uma descrição detalhada de todos os aspetos do Unicode, consulte The Unicode Standard.
Em comparação com mecanismos mais antigos para lidar com dados de caracteres e cadeias de caracteres, o Unicode simplifica a localização de software e melhora o processamento de texto multilíngue. Usando Unicode para representar dados de caracteres e cadeias 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. Unicode faz o seguinte:
- Permite que qualquer combinação de caracteres, extraídos de qualquer combinação de scripts e linguagens, 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 é sem perdas.
O Unicode suporta vários scripts usados por idiomas em todo o mundo, e também um grande número de símbolos técnicos e caracteres especiais usados na publicação. Os scripts suportados incluem, mas não estão limitados a, latim, grego, cirílico, hebraico, árabe, devanágari, tailandês, han, hangul, hiragana e katakana. Os idiomas suportados incluem, entre outros, alemão, francês, inglês, grego, russo, hebraico, árabe, hindi, tailandês, chinês, coreano e japonês. Unicode atualmente 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 Conventions for Function Prototypes. Essas funções usam a codificação UTF-16 (caracteres largos), que é a codificação mais comum de 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 caracteres e cadeias 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 línguas humanas é ainda maior do que isso, e pontos de código UTF-16 na faixa U+D800 até 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 combinados, como U+0308 (" ̈"), uma combinação de dierese ou umlaut. Unicode pode muitas vezes representar o mesmo glifo em uma forma ''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 uma forma composta para cada glifo. Por exemplo, o "o" minúsculo vietnamita com circunflexo e til ("ỗ") é representado por U+006f U+0302 U+0303 (o + Circumflex + Tilde). Para obter mais discussões sobre a combinação de 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. Enquanto as funções habilitadas para Unicode no Windows usam UTF-16, também é possível trabalhar com dados codificados em UTF-8 ou UTF-7, que são suportados no Windows como conjunto de caracteres multibyte páginas de código.
Novos aplicativos do Windows devem usar UTF-16 como sua representação de dados internos. O Windows também fornece suporte extensivo para páginas de código, e o uso misto no mesmo aplicativo é possível. Mesmo novos aplicativos baseados em Unicode às vezes precisam trabalhar com páginas de código. As razões para isso são discutidas em Code Pages.
Um aplicativo pode usar o MultiByteToWideChar e funções de WideCharToMultiByte 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 de conjunto de caracteres de byte único (SBCS), de conjunto de caracteres de byte duplo (DBCS) e páginas de código de conjunto de caracteres multibyte (MBCS).
Normalmente, um aplicativo do Windows deve usar UTF-16 internamente, convertendo apenas como parte de uma "camada fina" sobre a interface que deve usar outro formato. Esta técnica defende contra a perda e corrupção de dados. Cada página de código suporta caracteres diferentes, mas nenhum deles suporta todo o espectro de caracteres fornecido pelo Unicode. A maioria das páginas de código suporta subconjuntos diferentes, codificados de forma diferente. As páginas de código para UTF-8 e UTF-7 são uma exceção, uma vez que suportam o conjunto completo de caracteres Unicode, e a conversão entre essas codificações e UTF-16 é sem perdas.
Os dados convertidos diretamente da codificação usada por uma página de código para a codificação usada por 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. Mesmo quando seu aplicativo está 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 para uma página de código 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. Portanto, observe que WideCharToMultiByte pode 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 Unicode, você pode usar funções genéricas e o macro TEXT para manter um único conjunto de fontes a partir do qual compilar duas versões do seu aplicativo. Uma versão suporta 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 para Unicode, mantendo fontes de aplicativos 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 que são distintos daqueles para caracteres baseados em página de código e cadeias de caracteres. Juntamente 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 caracteres. Ele facilita a verificação de tipo de compilador para garantir que apenas valores de parâmetros Unicode sejam usados com funções que esperam cadeias de caracteres Unicode.
Tópicos relacionados