Jes*_*ley 23 c++ unicode console windows-xp
我还在学习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无法实现这一点?
Tyn*_*Tyn 15
怎么样std::wcout?
#include <iostream>
int main() {
    std::wcout << L"Hello World!" << std::endl;
    return 0;
}
这是标准的宽字符输出流.
尽管如此,正如Adrian指出的那样,这并没有解决这个事实cmd,默认情况下,它不处理Unicode输出.这可以通过手动配置控制台来解决,如Adrian的回答中所述:
cmd与/u论证;chcp 65001来改变输出格式;您也可以尝试使用_setmode(_fileno(stdout), _O_U16TEXT);,这需要fcntl.h和io.h(如本答案中所述,并在此博客文章中记录).
我不确定Windows XP是否会完全支持您的需求.使用命令控制台启用Unicode需要做三件事:
cmd /u.该/u说你的程序将输出的Unicode.chcp 65001指示要使用UTF-8,而不是代码页中的一个.Lucida Console Unicode.我的XP盒子有一个叫做的子集Lucida Console.它没有非常广泛的曲目,但如果你只是试图显示一些重音字符就足够了.您可以使用开源 {fmt} 库来便携地打印 Unicode 文本,包括在 Windows 上,例如:
#include <fmt/core.h>
int main() {
  fmt::print("Blah blah blah some gibberish unicode: ??ß??\n");
}
输出:
Blah blah blah some gibberish unicode: ??ß??
这需要使用/utf-8MSVC 中的编译器选项进行编译。
我不推荐使用,wcout因为它是不可移植的,例如:
Blah blah blah some gibberish unicode: ??ß??
将??ß??在 macOS 或 Linux ( https://godbolt.org/z/z81jbb )上错误地打印部件:
Blah blah blah some gibberish unicode: ??ss??
并且在不更改代码页的情况下甚至不能在 Windows 上工作:
Blah blah blah some gibberish unicode:
免责声明:我是 {fmt} 的作者。
| 归档时间: | 
 | 
| 查看次数: | 37763 次 | 
| 最近记录: |