【发布时间】:2015-03-22 23:00:12
【问题描述】:
我刚刚尝试在 VS2013 下编译一个旧的 MFC 应用程序。它抱怨非 Unicode MFC 应用程序已被弃用,并拒绝编译。这与this announcement 谈论不赞成对 MBCS 的支持有些相反。到目前为止,字符集选项共有三个选项:
- Unicode
- MBCS
- 未设置
就我个人而言,我对放弃对 MBCS 的支持完全满意 - 我既不想也不需要 MBCS。但我也不需要也不需要 Unicode - ANSI/ASCII 对我来说很好。因此,坚持从今以后每个 MFC 应用程序都必须使用 Unicode,并且(实际上)为平台提供支持所有可能语言的基础,无论其目标受众是谁,这似乎......极端。我错过了什么吗?在 VS2013 下是否还可以编译没有指定字符集的 MFC 应用程序?
【问题讨论】:
-
我认为另一个(更深远的)是是否支持 ANSI 字符串。 MBCS != ANSI,但 ANSI 字符是 1 字节宽,Unicode 是 2 字节宽。
-
嗯,Unicode 并不强制您为其他语言提供任何特定支持。但是,它确实可以防止尝试使用 ASCII 以外的任何内容的程序在配置为与程序预期不同的编码的系统上运行时受到 mojibake 的影响。
-
@franji1 - 刚刚编辑/更新了问题,以更好地反映我最初提出问题的意图。当您阅读最后一句话时,我认为它很清楚。
-
很难看出这个问题的重点。只有少数代码页实际上使用了包含超过一个字节的编码。它们涵盖东亚语言。 MFC 不在乎您不支持使用它们的用户,这完全是您的决定。它也不会阻止这样的用户,这取决于您。尽管这几乎是自动的,但他不会喜欢使用您的程序。 “未设置”选项仅在#defines 来自其他地方的项目中有用,例如 .h 文件。
标签: visual-c++ unicode mfc mbcs