VS2008 MFC项目ANSI/MBCS资源迁移至VS2019及编辑器适配
迁移VS2008 ANSI/MBCS MFC资源到VS2019的实操方案
一、项目基础配置调整
- 导入VS2008 MFC项目到VS2019,完成自动升级流程。
- 进入项目属性页:
- 「配置属性」→「常规」→「字符集」,选择使用多字节字符集(MBCS)。
- 「配置属性」→「C/C++」→「预处理器」,确认
_MBCS宏已在预处理器定义中(选择MBCS字符集后自动添加)。
二、资源文件迁移与编码适配
- 将原VS2008项目的
.rc、.rc2及resource.h复制到VS2019项目目录,替换自动生成的资源文件。 - 处理
.rc文件编码:- 在解决方案资源管理器中右键
.rc文件,选择「打开方式」→「源代码编辑器」。 - 删除文件开头的
#pragma code_page(65001)或UTF-16 BOM(若存在)。 - 添加对应代码页的声明:例如中文环境添加
#pragma code_page(936),英文环境添加#pragma code_page(1252)。 - 保存时选择「编码」→「ANSI」(或对应代码页编码),覆盖原文件。
- 在解决方案资源管理器中右键
三、让VS2019资源编辑器兼容ANSI/MBCS
VS2019资源编辑器默认倾向UTF-16,但可通过以下设置强制适配ANSI/MBCS:
- 设置资源文件默认编码:
右键.rc文件→「属性」→「高级」→「编码」,选择目标ANSI代码页(如「中文(GB2312)」),勾选「始终使用此编码保存」。 - 编辑资源时的编码保持:
每次编辑对话框、菜单或字符串表后,关闭编辑器若弹出编码转换提示,选择「保持当前编码(ANSI)」,拒绝切换到UTF-16。 - 字符串内容限制:
编辑字符串时仅使用目标ANSI代码页包含的字符,避免Unicode专属字符(如emoji、生僻Unicode汉字),防止编辑器强制转换编码。 - 应急修复:
若编辑器仍生成UTF-16格式,可重新用源代码编辑器打开.rc,移除UTF-16 BOM,恢复#pragma code_page声明,再保存为ANSI编码。
注:微软官方文档仅提及项目字符集设置,未覆盖资源编辑器的编码适配细节,上述步骤可确保资源编辑器正常编辑ANSI/MBCS资源,同时资源编译时按MBCS字符集处理。
内容的提问来源于stack exchange,提问作者franji1
相关产品推荐
相关产品推荐

