Поддержка Юникода
Юникод — это спецификация для поддержки всех наборов символов, включая те, которые не могут быть представлены в одном байте. Если вы программуете для международного рынка, рекомендуется использовать Юникод или многобайтовый набор символов (MBCS). Или кодируйте программу, чтобы ее можно было создать, изменив переключатель.
Расширенный символ — это двухбайтовый многоязыковой код символа. Десятки тысяч символов, составляющих почти все символы, используемые в современных вычислениях во всем мире, включая технические символы и специальные символы публикации, можно представить в соответствии со спецификацией Юникода как один широкий символ, закодированный с помощью 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. Единственным отличием является то, что основной единицей операции является шестнадцатибитный символ, а не восьмибитный. В отличие от многобайтовых кодировок нет необходимости (и не следует) обрабатывать символы Юникода как два отдельных байта. Однако необходимо иметь дело с возможностью одного символа, представленного суррогатной парой широких символов. Как правило, не писать код, предполагающий длину строки, совпадает с числом символов, будь то узкие или широкие, содержащиеся в нем.
Что вы хотите сделать?
Использование поддержки Юникода mFC и многобайтового набора символов (MBCS)
Создание интернационализированной программы с помощью Юникода
Используйте wmain, чтобы я смог передать аргументы с широкими символами в мою программу
Сведения о сопоставлениях универсального текста для переносимости байтовой ширины