gpt4 book ai didi

c++ - 如何使用 ncurses 在不同的终端上以相同的方式呈现 Unicode?

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:41:17 31 4
gpt4 key购买 nike

我被告知使用 ncurses由用户 MGetz 在我的程序中呈现 unicode 级别 this邮政。所以,我更新了我的代码以使用 ncurses ,但它在不同终端中的呈现方式仍然不同。我使用 g++ file.cpp -o file -std=c++11 -lncursesw 编译了我的代码说到我的代码,就在这里。

#include <iostream>
#include <string>
#include <ncurses.h>
#include <locale.h>

using namespace std;

void PrintLevel();

string lvl[9][11] {
{"\u250f", "\u2501", "\u2501", "\u2501", "\u2501", "\u2501", "\u2501", "\u2501", "\u2501", "\u2501", "\u2513"},
{"\u2503", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u2503"},
{"\u2503", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u2503"},
{"\u2503", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u2503"},
{"\u2503", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u2503"},
{"\u2503", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u2503"},
{"\u2503", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u2503"},
{"\u2503", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u0020", "\u2503"},
{"\u2517", "\u2501", "\u2501", "\u2501", "\u2501", "\u2501", "\u2501", "\u2501", "\u2501", "\u2501", "\u251B"}
};

int main() {
setlocale(LC_ALL, "");
initscr();
PrintLevel();
getch();
endwin();
}

void PrintLevel() {
for(int i = 0; i<9; i++) {
for(int j = 0; j<11; j++) {
printw(lvl[i][j].c_str());
if(j == 10) {
printw("\n");
}
}
}

refresh();
}

哦,仅供引用,我使用的是 Codenvy,因为我只能访问我学校的 Chromebook。在另一个类似 Codenvy 的服务 Codeanywhere 上尝试它,Unicode 甚至无法正确呈现,我明白了:

codeanywhere output

最佳答案

副手:

  • 由于屏幕显示的是替换字符(那个奇怪的问号),人们会假设终端是为 UTF-8 设置的,但是
  • 您正在调用 setlocale 来使用区域设置,但不要提及它们是什么(LC_ALL 等,如 locale 命令)和
  • 没有提及您是使用 ncursesw(预期)还是 ncurses 进行编译/链接。

如果您的语言环境设置和与 ncurses 的链接都错误,它可能看起来像那张图片。

关于c++ - 如何使用 ncurses 在不同的终端上以相同的方式呈现 Unicode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49885686/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com