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


Использование на международном уровне

Большинство традиционных кода 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 байтов, вы всегда должны управлять обоими байтами одновременно.

См. также

Юникод и многобайтовая кодировка
Стратегии международного использования