我试图获得unicode字符macron(U + 00AF),即一个超级核心,在各种Linux控制台上一致打印。到目前为止,一些控制台工作(例如,putty ssh),其他控制台没有(例如,ubuntu shell),而且我无法弄清楚我在一个案例中做了什么(可能是运气)而在另一个案例中是错误的。
我确实知道Unicode和Utf8的基础知识,但我无法弄清楚如何始终如一地获取控制台来显示相应的字符。
有什么建议吗?请注意,这显然适用于unix控制台 - 我发现的所有类似问题都集中在特定于Windows的控制台命令上。
以下是我有效的工作方式:
wchar_t post = L'¯'; //0xC2AF
std::wcout << post << std::endl;
答案 0 :(得分:0)
解决方案是将其作为多字符串输入流:
std::string s = "\uC2AF";
std::cout << s << std::endl;
或使用
设置区域设置char* setlocale( int category, const char* locale);
std::locale old_locale; // current locale
setlocale(LC_ALL, "en_US.UTF-8");
wchar_t w = 0xC2AF;
std::wcout << w << std::endl;
setlocale(LC_ALL, old_locale.name().c_str()); // restore locale
但最终结果取决于许多用户设置(控制台,字体等),所以不能保证它没问题。
答案 1 :(得分:0)
不幸的是,我尝试或找不到任何建议的方式始终显示适当的字符,所以我最终使用了ASCII连字符&#39; - &#39;足够接近。