请问在Windows中使用C ++将Unicode输出到控制台

我仍在学习C ++,所以请耐心接受我和草率的代码。我使用的编译器是Dev C ++。我希望能够使用cout将Unicode字符输出到控制台。每当我尝试类似的事情:


#include <iostream>


int main()

{

    std::cout << "Hello World!\n";

    std::cout << "Blah blah blah some gibberish unicode: ĐĄßĞĝ\n";

    system("PAUSE");

    return 0;

}

它将奇怪的字符输出到控制台,例如µA■Gg。为什么这样做,我如何显示ĐĄßĞĝ?还是Windows无法做到这一点?


泛舟湖上清波郎朗
浏览 310回答 3
3回答

慕容3067478

那std::wcout呢#include <iostream>int main() {&nbsp; &nbsp; std::wcout << L"Hello World!" << std::endl;&nbsp; &nbsp; return 0;}这是标准的宽字符输出流。但是,正如Adrian指出的那样,这并不能解决事实cmd,默认情况下,它不处理Unicode输出。可以通过手动配置控制台来解决,如Adrian的答案中所述:启动cmd与/u论证;调用chcp 65001更改输出格式;并在控制台中设置unicode字体(如Lucida Console Unicode)。您也可以尝试使用_setmode(_fileno(stdout), _O_U16TEXT);,它需要fcntl.h和io.h(如本答案所述,并在本博客文章中进行了记录)。

开满天机

我不确定Windows XP是否会完全支持您的需求。要使用命令控制台启用Unicode,需要做三件事:使用来启动命令窗口cmd /u。该/u说您的程序将输出Unicode。使用chcp 65001指示要使用UTF-8,而不是代码页中的一个。选择具有更多字形覆盖范围的字体。Windows的较新版本中的命令窗口提供了Lucida Console Unicode。我的XP盒中有一个子集,称为Lucida Console。它没有非常丰富的曲目,但是如果您只想显示一些带有重音符号的字符,就足够了。

眼眸繁星

您使用了ANSI输出流。您需要使用std::wcout << L"Blah blah blah some gibberish unicode: ĐĄßĞĝ\n";另外,请使用std :: cin.get(),而不要使用system(“ PAUSE”)
打开App,查看更多内容
随时随地看视频慕课网APP