在MBCS操作系统上运行单字节字符应用程序的风险



我有一个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在输入非英文字符时,会正确接受或检索非英文文本。

任何带有外文字符的文本都可能导致不需要的或不需要的重音和变音符转换为其他内容。

相关内容

  • 没有找到相关文章

最新更新