我在windows下用tdm-gcc测试c ++ 11字符串文字:
#include <iostream>
int main(int argc, char** argv)
{
std::cout << u8"你确定要这么做吗" << std::endl;
return 0;
}
命令行:
e:\src\c++\11>g++ utf8_literal.cc -std=c++11
使用chcp 65001
将代码更改为utf8然后运行应用程序,结果是
第一个中文字符你
不正确。但是如果添加英文字符,例如a
然后显示正确:
因此我们可以排除字体问题。为什么第一个角色在没有英文字符的情况下拒绝显示呢?
答案 0 :(得分:0)
std :: cout:u8"你确定要这么做吗"
之后的字符串不是UTF-8编码。
对于UTF-8编码,请参阅http://en.wikipedia.org/wiki/UTF-8
字符串的UTF-8代码是:
E4 BD A0 E7 A1 AE E5 AE 9A E8 A6 81 E8 BF 99 E4 B9 88 E5 81 9A E5 90 97