Partilhar via


Suporte para Unicode

Unicode é uma especificação para suportar todos os conjuntos de caracteres, incluindo aqueles que não podem ser representados em um único byte. Se você estiver programando para um mercado internacional, recomendamos que use Unicode ou um conjunto de caracteres multibyte (MBCS). Ou, codifique o seu programa para que possa criá-lo para qualquer um alterando um interruptor.

Um caractere largo é um código de caracteres multilíngue de 2 bytes. Dezenas de milhares de caracteres, compreendendo quase todos os caracteres usados na computação moderna em todo o mundo, incluindo símbolos técnicos e caracteres especiais de publicação, podem ser representados de acordo com a especificação Unicode como um único caractere largo codificado usando UTF-16. Os caracteres que não podem ser representados em apenas um caractere largo podem ser representados em um par Unicode usando o recurso de par substituto Unicode. Como quase todos os caracteres de uso comum são representados em UTF-16 em um único caractere largo de 16 bits, o uso de caracteres largos simplifica a programação com conjuntos de caracteres internacionais. Caracteres largos codificados usando UTF-16LE (para little-endian) são o formato de caractere nativo para Windows.

Uma cadeia de caracteres largos é representada como uma wchar_t[] matriz e é apontada por um wchar_t* ponteiro. Qualquer caractere ASCII pode ser representado como um caractere largo prefixando a letra L para o caractere. Por exemplo, L'\0' é o caractere NULL de terminação larga (16 bits). Da mesma forma, qualquer literal de cadeia de caracteres ASCII pode ser representado como um literal de cadeia de caracteres larga, prefixando a letra L ao literal ASCII (L"Hello").

Geralmente, caracteres largos ocupam mais espaço na memória do que caracteres multibyte, mas são mais rápidos de processar. Além disso, apenas uma localidade pode ser representada por vez em uma codificação multibyte, enquanto todos os conjuntos de caracteres no mundo são representados simultaneamente pela representação Unicode.

A estrutura MFC é habilitada para Unicode por toda parte, e MFC realiza a habilitação Unicode usando macros portáteis, conforme mostrado na tabela a seguir.

Tipos de dados portáteis no MFC

Tipo de dados não portátil Substituída por esta macro
char, wchar_t _TCHAR
char*, LPSTR (tipo de dados Win32), LPWSTR LPTSTR
const char*, LPCSTR (tipo de dados Win32), LPCWSTR LPCTSTR

A classe CString usa _TCHAR como base e fornece construtores e operadores para conversões fáceis. A maioria das operações de cadeia de caracteres para Unicode pode ser escrita usando a mesma lógica usada para manipular o conjunto de caracteres ANSI do Windows, exceto que a unidade básica de operação é um caractere de 16 bits em vez de um byte de 8 bits. Ao contrário de trabalhar com conjuntos de caracteres multibyte, você não precisa (e não deve) tratar um caractere Unicode como se fossem dois bytes distintos. No entanto, você tem que lidar com a possibilidade de um único personagem representado por um par substituto de caracteres largos. Em geral, não escreva código que assuma que o comprimento de uma cadeia de caracteres é o mesmo que o número de caracteres, estreitos ou largos, que ela contém.

O que pretende fazer?

Ver também

Texto e cadeias de caracteres
Suporte para o uso do wmain