【发布时间】:2017-12-28 14:18:59
【问题描述】:
我想将旧的 C++ MFC 项目从 Visual Studio 2005 转移到更新的版本。该项目使用我知道当前 Visual Studio 不再支持的多字节字符集。因此,第一步应该是使项目独立于字符集。一位同事告诉我,如果我在每个文本周围放置一个宏_T(),我就可以做到这一点。
不幸的是,该项目包含大量静态文本,添加宏需要数周时间。
没有别的办法吗?
【问题讨论】:
-
这个问题不清楚。 “[A] 我知道不再支持的多字节字符集”听起来好像有一个特定的字符集被放弃了,但我怀疑你真的在试图询问对 MBCS 的支持。此外,由于它谈论的是来自 IDE 而不是来自编译器和框架的支持,这让我想知道您是否担心源文件(或 .vcproj 文件)保存在 MBCS 中,还是实际上是代码问题。跨度>
-
仍然通过核心操作系统和 MFC 支持 MBCS。可能不希望使用损坏的字符编码,并且已经有 20 年了,但它仍然受到支持。您需要澄清“不再支持”的意思。
-
_T()宏的发明允许为 Windows 95 和 Windows NT 编译几乎相同的代码库。现在添加这些似乎有点晚了。 -
从技术上讲,除了为要使用的任何版本的 Visual Studio / MFC 下载 MBCS 库外,您无需执行任何操作。它仍然受支持,只是没有立即开箱即用。其次,你应该能够编写一个脚本或类似的东西来转换为宽字符——确保你处于源代码控制之下。我建议将字符串放在资源中,这样如果您想翻译它,就可以。
-
@Phil1970:Windows 上的标准是 UTF-16。 UTF-8 适用于数据交换(例如,将文件写入磁盘或网络套接字,从 Web 服务器提供数据等)。对于 Windows 编程,您需要一个非常不使用 UTF-16 的充分理由。
标签: c++ visual-studio mfc multibyte-characters