如何使用C ++在linux终端中显示unicode字符?

时间:2009-11-25 18:37:39

标签: c++ unicode terminal

我正在Linux环境下使用C ++进行国际象棋游戏,我希望在bash终端中使用unicode字符显示这些内容。有没有办法用cout显示符号?

输出骑士的例子很好:♞= U + 265E。

2 个答案:

答案 0 :(得分:5)

要输出Unicode字符,只需使用输出流,就像输出ASCII字符一样。您可以将Unicode代码点存储为多字符串:

 std::string str = "\u265E";
 std::cout << str << std::endl;

如果要输出一个码字高于ASCII范围的Unicode字符,也可以方便地使用宽字符输出:

 setlocale(LC_ALL, "en_US.UTF-8");
 wchar_t codepoint = 0x265E;
 std::wcout << codepoint << std::endl;

然而,正如其他人所说,这是否正确显示取决于用户环境中的很多因素,例如用户的终端是否支持Unicode显示,用户是否安装了正确的字体等对于像Ubuntu / Debian安装Gnome的大多数开箱即用的主流发行版而言,这不应该是一个问题,但不要指望它能在任何地方运行。

答案 1 :(得分:3)

抱歉,首先误解了你的问题。此代码在终端中打印出一个白色王(用KDE Konsole测试)

#include <iostream>

int main(int argc, char* argv[])
{
std::cout <<"\xe2\x99\x94"<<std::endl;
return 0;
}

通常,编码是通过语言环境指定的。尝试设置环境变量。

  

告诉应用程序使用   UTF-8编码,假设美国   英语是您的首选语言,   您可以使用以下命令:

export LC_ALL=en_US.UTF-8

您使用的是“裸”终端还是在X-Server下运行的东西?