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