2

可能重复:
如何在 Windows 控制台上输出 Unicode 字符串

我尝试在 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?

4

1 回答 1

2

您不能将编码设置为 UTF-16,因为cout和都wcout写入相同的面向字节的流 (STD_OUTPUT_HANDLE),并且仅支持面向字节的编码。UTF-16 是面向单词的。这意味着唯一可以写入标准输出的 Unicode 编码是 UTF-8。

于 2012-10-24T15:05:47.420 回答