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

发布于 2024-11-04 09:21:41 字数 66 浏览 2 评论 0原文

我有一个 MFC 应用程序,其中字符集为“未设置”。在具有多字节字符集代码页的操作系统上运行此应用程序有哪些相关风险?

I have an MFC application where the Character Set is "Not Set". What are the risks associated with running this application on a OS that has a Multi Byte Character Set code page?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

悲喜皆因你 2024-11-11 09:21:41

“字符集:未设置”选项既不定义 _MBCS 也不定义 _UNICODE。这意味着您正在使用 *A 系列函数。即使未定义 _MBCS,这些返回 MBCS 字符串。

如果 _MBCS 不影响从 *A 函数返回的字符串,那么它会做什么?它将一些 tcs* 函数映射到其 mbs* 版本,而不是 str* > 或 wcs* 变体。例如,如果没有 _MBCS_tcsrev 映射到 strrev,而不是 _mbsrev

因此,您可能无法反转从操作系统收到的多字节字符串,或以其他方式编辑它们。

The "Character Set: Not Set" option defines neither _MBCS nor _UNICODE. That means that you're using the *A series of functions. Those will return MBCS strings, even when _MBCS is not defined.

If _MBCS doesn't affect the strings returned from the *A functions, then what does it do? It maps some <tchar.h> tcs* functions to their mbs* versions, instead of the str* or wcs* variants. E.g. without _MBCS, _tcsrev maps to strrev, not _mbsrev.

Therefore, you may not be able to reverse the multi-byte strings you receive from the OS, or edit them otherwise.

被你宠の有点坏 2024-11-11 09:21:41

风险是:

1) 如果您使用非英语文本,并且用户输入俄语,则某些未映射到 MBCS 或需要字符集层的俄语字符将被检索为“?”

2) 您需要告知客户该应用程序。仅接受英文,并且不保证应用程序在输入非英文字符时能够正确接受或检索非英文文本。

3) 任何带有外语字符的文本都可能导致重音符号和变音符号不希望或不希望的转换为其他内容。

The risks are:

1) If you use non-English texts, and the user enters, say, Russian, some Russian characters that are not mapped to MBCS or require a Charset layer, will be retrieved as '?'

2) You need to inform the customer that the App. accepts English-only and no guarantee the App, when entering non-English characters, would accept or retrieve non-English texts correctly.

3) Any texts with foreign language characters may lead to unwanted or undesired conversion of accents and diacritics to something else.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文