关于 Windows CMD 设置 UTF-8 后,程序输出和光标的问题?

如下源码:

#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),出现如下图的异常输出:
    图片描述

  1. 前面乱码的三个字符可能是 “锟斤拷”(不确定)。

  2. 然后,CMD 的光标也偏移了,光标出现在 “测试测试” 的第二个“测”处。

  • 把 std::cout 换成 printf 后,所有输出都变成乱码:
    图片描述

请问这是 CMD UTF-8 显示的硬伤,还是我的操作有误?

阅读 4.7k
1 个回答

cmd的bug,ms不是很在意console的,凑合着用就行~

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进