gpt4 book ai didi

c - 我如何保证终端具有 NCURSES 的 Unicode/宽字符支持?

转载 作者:行者123 更新时间:2023-12-01 03:35:22 32 4
gpt4 key购买 nike

我正在为一个小的 TUI(文本用户界面)练习开发 NCURSES 应用程序。不幸的是,我无法选择使用如此美妙而忠实的 ASCII。我的程序使用了很多 Unicode 框绘图字符。

我的程序已经可以检测终端是否支持颜色。我需要做类似的事情:

if(!supportsUnicode()) //I prefer camel-case, it's just the way I am.
{
fprintf(stderr, "This program requires a Unicode-capable terminal.\n\r");
exit(1);
}
else
{
//Yay, we have Unicode! some random UI-related code goes here.
}

这不仅仅是简单地包含 ncursesw 的问题。并且只是设置语言环境。我需要获取特定的终端信息,如果不会发生,实际上会抛出错误。例如,当用户尝试在可爱的 XTerm 中运行程序时,我需要抛出错误。而不是支持 Unicode 的 UXTerm .

最佳答案

如前所述,您无法可靠地检测终端的功能。就此而言,您也无法检测到终端对颜色的支持。无论哪种情况,您的应用程序都只能检测您已配置的内容,这不是一回事。

有些人通过编写 UTF 编码的字符并使用光标位置报告来查看光标的位置(参见例如 Detect how much of Unicode my terminal supports, even through screen),在检测 Unicode 支持方面取得了部分成功。

使用 ncursesw 进行编译/链接依赖于正确配置您的区域设置,对于在 UTF-8 模式下不支持 VT100 线图的终端(例如 PuTTY)有一些解决方法。

进一步阅读:

  • Line Graphics curs_add_wch(3x)
  • NCURSES_NO_UTF8_ACS ncurses(3x)
  • 关于c - 我如何保证终端具有 NCURSES 的 Unicode/宽字符支持?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35329997/

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