Visual Studio 中文显示乱码问题

本文介绍了在Visual Studio中遇到中文乱码问题的解决方法。通过将工程文件从GB2312转码为UTF-8,并在编译选项中加入/utf-8,成功解决了运行时中文乱码的问题。

今天在码云上Fork了一个开源工程,编译环境是Visual Studio C++, 由于自己本地平台主要是进行Linux开发,平时文档编码格式都是utf-8的,编译没问题,但运行起来就是乱码,就像下图一样。
在这里插入图片描述
碰到这个问题,根据经验很确定就是文件编码问题,于是使用工具,将工程文件批量进行转码,由GB2312变换到utf-8。设置完成后标题栏中文正常显示了,但是里面输入文字,例如:

AfxMessageBox(_T("加载Duilib属性文件失败!"));

显示仍然是乱码,于是乎想到了翻阅MSDN, 终于查找了相关资料,Visual Studio 对于UTF-8格式支持不好,在VS2015版本(Visual Studio 2015 Update 2),增加一个编译选项/utf-8,作用就是将源码字符集和执行文件字符集指定为UTF-8。加上这个编译选项后,再重新编译运行,程序正确输出中文,问题解决。

/utf-8 (Set Source and Executable character sets to UTF-8)

总结

中文乱码问题,分析原因在于:

Visual Studio对于不带BOM的UTF-8文件,默认会根据本地locale的设置来决定文件的编码(对于简体中文系统,就是GBK)。因此对于UTF-8 without BOM的代码文件输出中文就是乱码。[^1]

解决方法,分两步:

  1. 使用批量转换工具讲文件编码格式转换为utf-8 格式,这样文件里面中文字符就能正常显示了,不会在编辑起来还显示乱码, 转换工具见我的另一篇文章: 批量转换文件编码
  2. 编译选项里面加上/utf-8, 这样将执行文件字符集指定为UTF-8, 与源码文件编码方式一样了。

参考文档
[^1] MSVC中C++ UTF8中文编码处理探究
[^2] shell 批量转换文件编码
[^3] /utf-8 (Set Source and Executable character sets to UTF-8)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值