2011-10-04 82 views
7

如何在C中查找當前語言環境的字符集?在C中獲取當前語言環境的字符集?

setlocale(LC_ALL,NULL)返回「en_US.UTF8」,但有沒有辦法獲得字符集?在我的系統上的/etc/locale.gen中,它列出了語言環境和字符集,所以它不在名稱中。

回答

6

您可以使用nl_langinfo(3)函數查詢當前語言環境的各種參數。該字符集通過致電nl_langinfo(CODESET)獲得。

請注意,在使用nl_langinfo之前,您必須先撥打setlocale以使您的程序能夠識別語言環境。

+0

你知道在Windows上做到這一點嗎? – Jookia

+0

@Jookia:我會說只是定義UNICODE並在Windows中使用'wchar_t' API。 MSDN中的快速搜索建議尋找'_getmbcp'函數來獲取編碼(請注意,Windows使用編碼的數字代碼),但僅用於解釋傳統文本文件。 –

+0

wchar_t APIs是UTF-16,所以假設我應該在Windows上扔UTF-16文本是安全的嗎? – Jookia

相關問題