VS2019下C++源代码中存储的中文字符串常量是UTF-8字符编码类型, 但是一运行程序变GBK编码的问题!

Author: kagula

last update date: 2020-8-30

Environment: Visual Studio 2019 Community Version 16.7.2

content

      在VS2019以前的VS C++编译器,  源代码中的中文字符串常量是什么字符编码, 编译运行后也是什么字符编码.  但是VS2019不一样, 中文的"测"字, 源代码中的中文字符串常量, 编码类型是UTF-8, 但是一运行程序,   UTF-8编码的字符串常量内容"E6 B5 8B"就变成GBK编码"B2 E2", 然后下面的代码就导致了断言异常.

		std::string sss("测");
		assert(sss == "\xe6\xb5\x8b");

现在我们在字符串常量前加上u8标记

		std::string sss(u8"测");
		assert(sss == "\xe6\xb5\x8b");

程序顺利通过测试.  问题解决!

Supplementary

[1]设置iostream的中文字符编码, 示例

std::locale::global(std::locale("zh_CN.UTF-8"));

猜你喜欢

转载自blog.csdn.net/lee353086/article/details/108311398
今日推荐