Использование на международном уровне
Большинство традиционных кода C и C++ делают предположения о манипуляциях с символами и строками, которые не работают хорошо для международных приложений. Хотя MFC и библиотека времени выполнения поддерживают Юникод или MBCS, вы по-прежнему работаете. В этом разделе описывается значение "международное включение" в Visual C++:
Юникод и MBCS включены с помощью переносимых типов данных в списках параметров функции MFC и возвращаемых типах. Эти типы определяются соответствующими способами в зависимости от того, определяет ли сборка символ
_UNICODE
или символ_MBCS
(то есть DBCS). Различные варианты библиотек MFC автоматически связаны с приложением в зависимости от того, какие из этих двух символов определяют сборку.Код библиотеки классов использует переносимые функции времени выполнения и другие средства для обеспечения правильного поведения Юникода или MBCS.
В коде по-прежнему необходимо обрабатывать определенные виды задач интернационализации:
Используйте те же переносимые функции во время выполнения, которые делают MFC переносимыми в любой среде.
Сделайте литеральные строки и символы переносимыми в любой
_T
среде с помощью макроса. Дополнительные сведения см. в разделе "Сопоставления универсального текста" в tchar.h.Примите меры предосторожности при анализе строк в MBCS. Эти меры предосторожности не требуются в Юникоде. Дополнительные сведения см. в советах по программированию MBCS.
Обратите внимание на то, что в приложении используются символы ANSI (8-разрядная версия) и Юникод (16-разрядная версия). В некоторых частях программы и символов Юникода можно использовать символы ANSI, но их нельзя смешивать в одной строке.
Не выполняйте жесткие строки кода в приложении. Вместо этого сделайте их ресурсами STRINGTABLE, добавив их в RC-файл приложения. Затем приложение можно локализовать, не требуя изменения исходного кода или повторной компиляции. Дополнительные сведения о ресурсах STRINGTABLE см . в редакторе строк.
Примечание.
Европейские и MBCS-наборы символов имеют некоторые символы, такие как акцентированные буквы, с кодами символов, превышающими 0x80. Так как в большинстве кодов используются подписанные символы, эти символы больше 0x80 расширяются при преобразовании int
в . Это проблема для индексирования массива, так как символы с расширенным знаком, будучи отрицательными, индексы за пределами массива. Языки, использующие MBCS, такие как японский, также уникальны. Так как символ может состоять из 1 или 2 байтов, вы всегда должны управлять обоими байтами одновременно.
См. также
Юникод и многобайтовая кодировка
Стратегии международного использования