Поделиться через


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

Обновлен: Ноябрь 2007

Юникод является стандартом, поддерживающим все кодировки, включая те, которые не могут быть представлены с помощью однобайтовых знаков. При написании программ для международного рынка следует использовать Юникод или многобайтовые кодировки (MBCS) или написать программу таким образом, чтобы при ее построении можно было использовать одну из этих кодировок, указывая параметр.

Знак Юникода — это двухбайтовый многоязыковой код знака. Большинство знаков, используемых в современных вычислительных системах по всему миру, включая технические символы и специальные знаки, используемые в издательском деле, могут быть представлены в двухбайтовом виде (в соответствии со стандартом Юникода). Знаки, которые не могут быть представлены как один двухбайтовый знак, могут быть представлены в Юникоде как суррогатная пара. Поскольку каждый знак Юникода может быть представлен как шестнадцатибитный, их использование упрощает программирование с использованием международных кодировок.

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

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

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

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

Непереносимый тип данных

Макрос, которым он заменяется

char

_TCHAR

char*, LPSTR (тип данных Win32)

LPTSTR

const char*, LPCSTR (тип данных Win32)

LPCTSTR

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

Выполняемые задачи

См. также

Основные понятия

Поддержка кодировок в С++

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