Риски запуска приложения с однобайтовыми символами в ОС MBCS

#c #mfc #internationalization #mbcs

#c #mfc #интернационализация #mbcs

Вопрос:

У меня есть приложение MFC, в котором набор символов «Не установлен». Каковы риски, связанные с запуском этого приложения в ОС, имеющей кодовую страницу с набором многобайтовых символов?

Ответ №1:

Параметр «Набор символов: не задано» не определяет ни _MBCS ни _UNICODE . Это означает, что вы используете серию функций * A. Они будут возвращать строки MBCS, даже если _MBCS значение не определено.

Если _MBCS это не влияет на строки, возвращаемые из функций * A, то что это делает? Он сопоставляет некоторые <tchar.h> tcs* функции с их mbs* версиями вместо вариантов str* или wcs* . Например, без _MBCS , _tcsrev сопоставляет с strrev , не _mbsrev .

Следовательно, вы не сможете отменить многобайтовые строки, которые вы получаете от ОС, или отредактировать их иным образом.

Ответ №2:

Риски заключаются в:

1) Если вы используете тексты не на английском языке, и пользователь вводит, скажем, русский, некоторые русские символы, которые не сопоставлены с MBCS или требуют уровня кодировки, будут извлечены как ‘?’

2) Вам необходимо сообщить клиенту, что приложение. принимает только английский, и нет гарантии, что приложение при вводе неанглоязычных символов будет правильно принимать или извлекать неанглоязычные тексты.

3) Любые тексты с символами иностранного языка могут привести к нежелательному преобразованию акцентов и диакритических знаков во что-то другое.