繁体   English   中英

在ncurses中打印盲文字符

[英]Print braille characters in ncurses

我试图在ncurses中打印盲文字符。

这是我的代码:

#include <ncurses.h>

char *str = 
    " ⠁⠂⠃⠄⠅⠆⠇⠈⠉⠊⠋⠌⠍⠎⠏\n"
    "⠐⠑⠒⠓⠔⠕⠖⠗⠘⠙⠚⠛⠜⠝⠞⠟\n"
    "⠠⠡⠢⠣⠤⠥⠦⠧⠨⠩⠪⠫⠬⠭⠮⠯\n"
    "⠰⠱⠲⠳⠴⠵⠶⠷⠸⠹⠺⠻⠼⠽⠾⠿\n";


int main(int argc, const char *argv[]) {
    initscr();
    printw("%s", str);
    getch();
    printf("%s", curses_version());
    endwin();
    printf("%s", str);
    return 0;
}

输出是:

 ?~A?~B?~C?~D?~E?~F?~G?~H?~I?~J?~K?~L?~M?~N?~O
?~P?~Q?~R?~S?~T?~U?~V?~W?~X?~Y?~Z?~[?~\?~]?~^?~_
⠠⠡⠢⠣⠤⠥⠦⠧⠨⠩⠪⠫⠬⠭⠮⠯
⠰⠱⠲⠳⠴⠵⠶⠷⠸⠹⠺⠻⠼⠽⠾⠿

如何正确输出所有字符?

更新:我也尝试过printf这似乎工作, addstr产生相同的输出printw

如果我用setlocale(LC_ALL, "");更改语言环境setlocale(LC_ALL, ""); 我得到输出:

  A B C D E F G H I J K L M N O
 P Q R S T U V W X Y Z [ \ ] ^ _
⠠⠡⠢⠣⠤⠥⠦⠧⠨⠩⠪⠫⠬⠭⠮⠯
⠰⠱⠲⠳⠴⠵⠶⠷⠸⠹⠺⠻⠼⠽⠾⠿

经过一些实验,我发现了可能是错误的:

  1. 您的程序默认使用C语言环境。 这假定为ASCII编码。 这不是当你与输出多字节字符的问题, stdio ,因为这些功能只是传递字节是到控制台。 但是ncurses实际上使用了语言环境,所以它可以知道一个字符组成一个字符(对于精确定位很重要)等等。更改你的程序如下:

     #include <curses.h> #include <locale.h> int main(int argc, char *argv[]) { // initialize locale to system's default: setlocale(LC_ALL, ""); // now init and use curses ... 
  2. 如果仍然出现乱码输出,则系统的libncurses不会处理unicode。 在这种情况下,链接ncursesw而不是ncurses ,你应该完成。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM