2011-10-04 11 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 APIはUTF-16なので、WindowsでUTF-16テキストを投げるだけでいいと思いますか? – Jookia

関連する問題