如下源码:
#include <iostream>
using std::cout;
#include <windows.h>
int main()
{
// set CMD code page to utf-8
SetConsoleOutputCP(65001);
cout << "是否\n\n测试测试";
getchar();
}
CMD 代码页设置为 65001 (UTF-8) ,输出一些中文字符(源文件字符编码为 UTF-8 无 BOM),出现如下图的异常输出:
前面乱码的三个字符可能是 “锟斤拷”(不确定)。
然后,CMD 的光标也偏移了,光标出现在 “测试测试” 的第二个“测”处。
把 std::cout 换成 printf 后,所有输出都变成乱码:
请问这是 CMD UTF-8 显示的硬伤,还是我的操作有误?
cmd的bug,ms不是很在意console的,凑合着用就行~