vs2010 调试窗口debugger UTF8 显示汉字 乱码

谨记:vs默认debug调试显示变量是 GB2312编码,而开发中c、cpp文档编码格式通常需要UTF-8,在此文档下汉字字符串已经是UTF8,调试窗口是用GB2312显示乱码(本身并未乱码)所以需要借助S8说明符号。

UTF-8 支持中文字符,且跨平台。

vs默认先识别BOM(找不到就按GBK格式编译,这就坑了UTF-8),再选择编码格式是不是UTF-8,推荐vs编译编码格式 UTF-8 BOM。(博客其他篇幅中详述,vs怎么用UTF-8:原理是:加一句话告诉编译器别瞎整,全文就是UTF-8!别瞎搞!)

如上图,项目是用utf-8编码格式,但是调试窗口,中文显示乱码;

原因:调试窗口还假定文本是在本地窄字符集中编码的,换句话说 调试窗口编码是GB2312

解决办法:

幸运的是,有's8' 格式说明符,这种方法可以显示正确的值。如果我们将',s8'附加到变量名称,Visual Studio将以UTF-8重新分析文本并正确呈现文本:(双击,Name下面的字段,加上,s8 )

要说明的是's8'格式说明符适用于普通字符数组,但不适用于std :: string变量。我去年向微软报告了这一点,但他们显然已将其修改为未来版本的Visual Studio。

那string怎么处理呢?我采用了曲线绕过的办法,如下图(先c_str()再,s8)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

闫有尽意无琼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值