我有一个MFC应用程序,其中字符集是"未设置"。在具有多字节字符集代码页的操作系统上运行此应用程序有什么风险?
"Character Set: Not Set"选项既不定义_MBCS
也不定义_UNICODE
。这意味着你在使用*A系列函数。这些将返回MBCS字符串,即使没有定义_MBCS
。
如果_MBCS
不影响从*A函数返回的字符串,那么它做什么?它将一些<tchar.h>
tcs*
函数映射到它们的mbs*
版本,而不是str*
或wcs*
变体。例如,没有_MBCS
, _tcsrev
映射到strrev
,而不是_mbsrev
。
因此,您可能无法反转从操作系统接收到的多字节字符串,或者以其他方式编辑它们。
风险如下:
1)如果您使用非英语文本,并且用户输入,例如,俄语,则一些未映射到MBCS或需要Charset层的俄语字符将被检索为'?'
2)你需要告知客户,App只接受英文,不保证App在输入非英文字符时,会正确接受或检索非英文文本。