#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) Любые тексты с символами иностранного языка могут привести к нежелательному преобразованию акцентов и диакритических знаков во что-то другое.