Поддержка многобайтовых кодировок
Многобайтовые кодировки (MBCS) — это более старый подход к поддержке кодировок, подобных японской и китайской, которые не могут быть представлены одним байтом. Для разработки новых приложений следует использовать Юникод для всех текстовых строк, за исключением, возможно, системных строк, которые не видны пользователям. MBCS — это устаревшая технология, которая не рекомендуется для разработки новых приложений.
Наиболее распространенная реализация многобайтовой кодировки — двухбайтовая кодировка (DBCS). Visual C++ в целом и MFC в частности полностью поддерживают DBCS.
Примеры см. в файлах исходного кода MFC.
Для платформ, использующих объемные кодировки, наилучшая альтернатива Юникоду — это MBCS. MFC поддерживает MBCS с помощью интернациализируемых типов данных и функций времени выполнения C. То же следует сделать и в вашем коде.
В MBCS символы кодируются одним или двумя байтами. В двухбайтовых символах первый или старший байт указывает, что он и следующий байт должны интерпретироваться как один символ. Первый байт относится к диапазону кодов, зарезервированных для использования в качестве старших байтов. То, какие диапазоны байтов могут быть старшими байтами, зависит от используемой кодовой страницы. Например, японская кодовая страница 932 использует в качестве старших байтов диапазон 0x81–0x9F, но корейская кодовая страница 949 использует другой диапазон.
Учитывайте следующие аспекты при программировании с использованием MBCS.
Символы MBCS в символах среды MBCS могут отображаться в строках, таких как имена файлов и каталогов.
Операции редактирования
Операции редактирования в приложениях с MBCS должны работать с символами, а не байтами. Курсор не должен разделять символ, клавиша СТРЕЛКА ВПРАВО должна перемещаться вправо один символ и т. д. Удаление должно удалить символ; Отмена должна перенастраивает его.
Обработка строк
В приложении, использующем MBCS, обработка строк вызывает особые проблемы. Символы из одного и двух байтов могут быть перемешаны в одной строке. Поэтому необходимо всегда проверять старшие байты.
Поддержка библиотеки времени выполнения
Библиотеки времени выполнения языка C и MFC поддерживают однобайтовые и многобайтовые кодировки, а также Юникод. Однобайтовые строки обрабатываются с str
помощью семейства функций времени выполнения, строки MBCS обрабатываются с соответствующими _mbs
функциями, а строки Юникода обрабатываются с соответствующими wcs
функциями. В реализациях функций-членов классов MFC используются переносимые функции времени выполнения, которые в некоторых обстоятельствах сопоставляются с обычным семейством функций str
, функциями MBSC или функциями Юникода, как описано в разделе "Переносимость MBSC и Юникода".
Переносимость MBSC и Юникода
С помощью файла заголовка tchar.h можно создавать однобайтовые приложения, MBCS и Юникод из одного источника. Tchar.h определяет макросы, префиксированные с _tcs, которые сопоставляются с str
функциями_mbs
, wcs
соответствующим образом. Чтобы создать MBCS, определите символ _MBCS
. Чтобы создать Юникод, определите символ _UNICODE
. По умолчанию _UNICODE
определяется для приложений MFC. Дополнительные сведения см. в разделе "Сопоставления универсального текста" в tchar.h.
Примечание.
Поведение не определено при определении обоих _UNICODE
и _MBCS
.
Файлы заголовков Mbctype.h и Mbstring.h определяют функции и макросы MBCS, которые могут понадобиться в некоторых случаях. Например, _ismbblead
сообщает, является ли указанный байт в строке старшим.
Для международной переносимости кодируйте программу с помощью юникодов или многобайтовых наборов символов (MBCS).
Что вы хотите сделать?
См. также
Текст и строки
Поддержка многобайтовой кодировки MBCS в Visual C++