Điều kỳ lạ là htop
sử dụng ncurses, có thể vẽ các dòng có / không có Unicode. Tuy nhiên, nhìn vào mã nguồn trong CRT.c
cho thấy lời giải thích:
#ifdef HAVE_LIBNCURSESW
if(strcmp(nl_langinfo(CODESET), "UTF-8") == 0)
CRT_utf8 = true;
else
CRT_utf8 = false;
#endif
CRT_treeStr =
#ifdef HAVE_LIBNCURSESW
CRT_utf8 ? CRT_treeStrUtf8 :
#endif
CRT_treeStrAscii;
và CRT_treeStrUtf8
giá trị là
const char *CRT_treeStrUtf8[TREE_STR_COUNT] = {
"\xe2\x94\x80", // TREE_STR_HORZ ─
"\xe2\x94\x82", // TREE_STR_VERT │
"\xe2\x94\x9c", // TREE_STR_RTEE ├
"\xe2\x94\x94", // TREE_STR_BEND └
"\xe2\x94\x8c", // TREE_STR_TEND ┌
"+", // TREE_STR_OPEN +
"\xe2\x94\x80", // TREE_STR_SHUT ─
};
Tuy nhiên, ncurses (bất kỳ triển khai lời nguyền nào) đều có các ký hiệu di động cho những thứ không phụ thuộc vào việc mã hóa có phải là UTF-8 hay không. Một số ứng dụng (như tùy chọn của hộp thoại--ascii-lines
) cung cấp tùy chọn sử dụng vẽ đường thẳng ASCII, nhưng một ứng dụng thậm chí không cố gắng sử dụng vẽ đường thẳng được cung cấp trong ncurses sẽ không sử dụng hiệu quả thư viện.
Nói tóm lại, khi bạn bắt gặp một chương trình hoạt động như vậy, bạn nên báo cáo nó là một lỗi cho các nhà phát triển.
Đọc thêm:
- Line Graphics (trang hướng dẫn bổ sung ncurses)
border
, wborder
, box
, hline
, whline
, vline
, wvline
,
mvhline
, mvwhline
, mvvline
, mvwvline
- tạo lời nguyền biên giới, đường ngang và dọc
dialog
ảnh chụp màn hình ( không yêu cầu mã hóa UTF-8 để sử dụng vẽ đường thẳng)