Tôi đang cố gắng để thêm wchar_t ký tự Unicode để một ncurses hiển thị trong C.Thêm ký tự Unicode/UTF8 để một ncurses hiển thị trong C
Tôi có một mảng:
wchar_t characters[]={L'\uE030', L'\uE029'}; // containing 2 thai letters, for example
Và sau đó tôi cố gắng để thêm một wchar_t từ mảng đến ncurses hiển thị với:
add_wch(characters[0]);
để cung cấp thông tin hơn một chút, làm điều này với ASCII công trình ok, sử dụng:
char characters[]={'A', 'B'};
// and later...
addch(characters[0]);
Để thiết lập miền địa phương, tôi thêm bao gồm ...
#include <locale.h>
// in main()
setlocale(LC_CTYPE,"C-UTF-8");
Các ncurses bao gồm là:
#include <ncurses.h>
Biên soạn với:
(chỉnh sửa: thêm c99 tiêu chuẩn, để hỗ trợ tên char phổ quát.)
gcc -o ncursesutf8 ncursesutf8.c -lm -lncurses -Wall -std=c99
tôi nhận được biên soạn sau đây cảnh báo (tất nhiên thực thi sẽ thất bại):
ncursesutf8.c:48: warning: implicit declaration of function ‘add_wch’
Tôi đã cố gắng chỉ sử dụng addch
mà dường như được macro'ed để làm việc với wchar_t nhưng khi tôi làm điều đó các ký tự Unicode không hiển thị, thay vào đó chúng hiển thị dưới dạng ký tự ASCII.
Mọi suy nghĩ?
Tôi đang sử dụng OS X Snow Leopard, 10.6.6
Sửa: lỗi gỡ bỏ trên wchar_t []
gán để sử dụng L'\u0E30'
thay vì L"\u0E30"
, vv Tôi cũng đã cập nhật các thiết lập trình biên dịch sử dụng C99 (để thêm phổ biến hỗ trợ tên char). cả hai thay đổi đều không khắc phục được sự cố.
Vẫn không có câu trả lời nào về điều này, có ai biết cách thực hiện Unicode ncurses addchar
(add_wchar?)?! Cứu giúp!
Cũng lưu ý rằng bạn không bao giờ được chuyển bất kỳ chuỗi nào trừ '' '' đến 'setlocale'. Việc chuyển các kết quả '" "' trong việc định vị miền đã được cấu hình/hệ thống, sẽ là UTF-8 dựa trên bất kỳ hệ thống hiện đại nào. Các tên như '" C-UTF-8 "' không di động. –