2011-10-04 25 views
7

Làm cách nào để tìm bộ ký tự của ngôn ngữ hiện tại trong C?Lấy bộ ký tự của miền địa phương hiện tại trong C?

setlocale (LC_ALL, NULL) trả về "en_US.UTF8", nhưng có cách nào để lấy bộ ký tự không? Trong /etc/locale.gen trên hệ thống của tôi, nó liệt kê các ngôn ngữ và các bộ ký tự, vì vậy nó không có trong tên.

Trả lời

6

Bạn có thể truy vấn các thông số khác nhau của ngôn ngữ hiện tại bằng cách sử dụng chức năng nl_langinfo(3). Bộ ký tự thu được bằng cách gọi nl_langinfo(CODESET).

Lưu ý rằng bạn phải gọi setlocale trước khi sử dụng nl_langinfo để làm cho chương trình của bạn nhận thức được ngôn ngữ.

+0

Bạn có biết cách thực hiện điều này trên Windows không? – Jookia

+0

@Jookia: Tôi muốn nói chỉ định nghĩa UNICODE và sử dụng API 'wchar_t' cho mọi thứ trong Windows. Tìm kiếm nhanh trong MSDN gợi ý tìm kiếm hàm '_getmbcp' để lấy mã hóa (lưu ý, các cửa sổ đó sử dụng mã số của mã hóa), nhưng chỉ sử dụng để giải thích các tệp văn bản cũ. –

+0

Các API wchar_t là UTF-16, vì vậy có an toàn khi giả sử rằng tôi chỉ nên ném văn bản UTF-16 tại Windows? – Jookia

Các vấn đề liên quan