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!别瞎搞!)

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

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

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

解决办法:

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

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

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

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

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