代码之家  ›  专栏  ›  技术社区  ›  chmike

std::wcout的意外输出;在Windows外壳中

  •  3
  • chmike  · 技术社区  · 16 年前

    std::wcout << L"élève" << std::endl;
    

    打印出“ÚlÞve:”这显然不是预期的结果。

    这显然是一个错误。这怎么可能?我该如何处理这种“特征”?

    5 回复  |  直到 15 年前
        1
  •  12
  •   Dave Van den Eynde    16 年前

    C++编译器不支持代码文件中的Unicode。您必须用转义版本替换这些字符。

    试试这个:

    std::wcout << L"\x00E9l\x00E8ve" << std::endl;
    

    此外,您的控制台还必须支持Unicode。

    更新:

    它不会在控制台中生成所需的输出,因为控制台不支持Unicode。

        3
  •  1
  •   Community CDub    8 年前

    您可能还想看看 this question

        4
  •  1
  •   dan04    14 年前

    这显然是一个错误。这怎么可能?

    遗留编码:“OEM”代码页(在命令提示符下使用)和“ANSI”代码页(由GUI使用)。

    您的C++源文件在ANSI代码页1252(或者可能是1254, 1256或1258),但是您的控制台正在将其解释为OEM代码页850。

        5
  •  0
  •   Mihai Nita    15 年前

    控制台使用OEM代码页。