Поддержка Юникода

Юникод — это спецификация для поддержки всех наборов символов, включая те, которые не могут быть представлены в одном байте. Если вы программуете для международного рынка, рекомендуется использовать Юникод или многобайтовый набор символов (МБ CS). Или кодируйте программу, чтобы ее можно было создать, изменив переключатель.

Расширенный символ — это двухбайтовый многоязыковой код символа. Десятки тысяч символов, составляющих почти все символы, используемые в современных вычислениях во всем мире, включая технические символы и специальные символы публикации, можно представить в соответствии со спецификацией Юникода как один широкий символ, закодированный с помощью UTF-16. Символы, которые не могут быть представлены только в одном широком символе, можно представить в паре Юникода с помощью функции суррогатной пары Юникода. Так как почти каждый символ в общем использовании представлен в UTF-16 в одном 16-разрядном широком символе, используя широкие символы, упрощает программирование с помощью международных наборов символов. Широкие символы, закодированные с помощью UTF-16LE (для маленького эндиана) — это собственный формат символов для Windows.

Строка расширенных символов представляется как массив wchar_t[], и на нее указывает указатель wchar_t*. Любой символ ASCII может быть представлен как расширенный символ путем добавления к нему префикса "L". Например, "L'\0'" является 16-битным расширенным символом для значения NULL. Подобным образом все строковые литералы, составленные из символов ASCII, могут быть представлены как строковые литералы из расширенных символов путем добавления к литералу ASCII префикса "L" (L"Hello").

Как правило, расширенные символы занимают больше памяти, чем многобайтовые символы, однако они обрабатываются быстрее. Кроме того, в многобайтовой кодировке может представляться только один языковой стандарт, а все наборы символов в мире представлены одновременно представлением Юникода.

Поддержка Юникода обеспечивается для всех компонентов платформы MFC. MFC обеспечивает поддержку Юникода с помощью переносимых макросов, как показано в следующей таблице.

Типы переносимых данных в MFC

Непереносимый тип данных Макрос, которым он заменяется
char, wchar_t _TCHAR
char*, LPSTR (тип данных Win32), LPWSTR LPTSTR
const char*, LPCSTR (тип данных Win32), LPCWSTR LPCTSTR

Класс CString используется _TCHAR в качестве основы и предоставляет конструкторы и операторы для простых преобразований. Большинство операций со строками Юникода может быть написано с помощью средств, которые используются для обработки кодировки Windows ANSI. Единственным отличием является то, что основной единицей операции является шестнадцатибитный символ, а не восьмибитный. В отличие от многобайтовых кодировок нет необходимости (и не следует) обрабатывать символы Юникода как два отдельных байта. Однако необходимо иметь дело с возможностью одного символа, представленного суррогатной парой широких символов. Как правило, не писать код, предполагающий длину строки, совпадает с числом символов, будь то узкие или широкие, содержащиеся в нем.

Что вы хотите сделать?

См. также

Текст и строки
Поддержка использования wmain