在Windows中编码控制台输出流

时间:2012-10-24 12:23:42

标签: c++ c winapi encoding

  

可能重复:
  How to Output Unicode Strings on the Windows Console

我尝试在win32console应用程序中输出UTF-16字符串到控制台,但是我无法更改输出流的编码,我尝试使用SetConsoleOutputCP()函数但是当我使用下一个代码进行测试时

    std::wcout << GetConsoleOutputCP() << std::endl;//output 866
    SetConsoleOutputCP(CP_WINUNICODE);              //if i set CP_UTF8 it works
    std::wcout << GetConsoleOutputCP() << std::endl;//output 866

我得到两个案例相同的结果(866)。当我尝试设置CP_UTF8时,它工作正常,但我需要UTF-16,为什么我的尝试失败,如何将输出流的编码设置为UTF-16?

1 个答案:

答案 0 :(得分:1)

您无法将编码设置为UTF-16,因为coutwcout都写入相同的面向字节的流(STD_OUTPUT_HANDLE)并且仅面向字节编码得到支持。 UTF-16是面向字的。这意味着可以写入标准输出的唯一Unicode编码是UTF-8。