【发布时间】:2015-03-18 01:48:07
【问题描述】:
我正在尝试将 C++11 程序从 Windows 移植到 Linux (GCC-4.9)。 本来我只是在程序里面设置locale
setlocale(LC_ALL, "");
但是,它在 Linux(Linux Mint 的最新版本)上显示缺少字符。然后我继续将所有源文件保存为 UTF-8 格式,这解决了 linux 下的问题,但现在所有字符在 windows 中都搞砸了。
如果有帮助,语言是法语。 有没有什么方法可以在两个平台下正确显示文字而不用太麻烦?
非常感谢您的帮助,谢谢。
void EcranBienvenue()
{
char coinHG = (char)201;
char coinHD = (char)187;
char coinBG = (char)200;
char coinBD = (char)188;
char ligneH = (char)205;
char ligneV = (char)186;
#ifdef _WIN32
system("cls");
#elif defined __linux__
system("clear");
#else
cout << string(20,'\n');
#endif
setlocale(LC_ALL, "C");
cout << coinHG;
for (int i = 0; i < 48; i++)
cout << ligneH;
cout << coinHD << endl;
cout << ligneV << " " << ligneV << endl;
cout << ligneV << " Les productions inc " << ligneV << endl;
cout << ligneV << " " << ligneV << endl;
cout << ligneV << " Système de gestion des abonnements " << ligneV << endl;
cout << ligneV << " " << ligneV << endl;
cout << coinBG;
for (int i = 0; i < 48; i++)
cout << ligneH;
cout << coinBD << endl;
setlocale(LC_ALL, "");
}
边框在 Linux 上不起作用是正常的。 但是,三行文字会在终端上准确显示。
在 Windows 上,“è”将是一个不正确的字符。
Système de gestion des abonnements
【问题讨论】:
-
字符从何而来?你如何展示它们?有一个代码示例会有所帮助。
-
“它在 Linux 上显示丢失的字符” - 用什么方式来表达它......!
-
@TonyD 黑钻石,中间有问号
-
你必须比这更具体。一件事,在您的源代码中使用
-à是不可靠的;坚持使用您的源代码中的基本 ASCII (32 - 127)。 -
@Tristan 是的,但你不能通过将它嵌入到源代码中来做到这一点
标签: c++ linux windows utf-8 locale