4
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;
}
出力は次のようになります。
すべての文字が正しくI出力を行う方法?~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, "");
でロケールを変更した場合、私は出力を得る:いくつかの実験では
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 [ \ ]^_
⠠⠡⠢⠣⠤⠥⠦⠧⠨⠩⠪⠫⠬⠭⠮⠯
⠰⠱⠲⠳⠴⠵⠶⠷⠸⠹⠺⠻⠼⠽⠾⠿
だから、 'stdio'でも使えますか?いくつかのエンコーディングの問題のように見えますが、ncursesのマルチバイト文字の処理にはバグかもしれません。 –
'stdio'で動作するようですが、ncursesのバージョン6.0.20160910を実行しています –
おそらくこれが役立つでしょう:https://stackoverflow.com/a/6249265/8051589? –