[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][TOP]

glib 2.4.1: g_filename_from_utf8()


やすいです.

ここが適切な場所ではないかもしれませんが….

glib 2.4.1 の g_filename_from_utf8() 関数でうまく locale の
文字列に変換できず,UTF-8 のまま返ってきてしまいます.かわりに
g_locale_from_utf8() を使ってみたところ,うまく変換できました.
g_get_charset() では,正しく locale の文字コード(EUC-JP)が
かえってきます.

glib のソースを見てみました.両関数とも glib/gconvert.c 中で
定義されていますが,g_locale_from_utf8() の場合は,変換先
コードを g_get_charset() の結果をそのまま使っているのに対し,
g_filename_from_utf8() の場合 get_filename_charset() という
関数を呼んでいます.

中を見てみると,環境変数 G_FILENAME_ENCODING がセットされて
いなければ,UTF-8 としてしまうようになっているようです.実際に
環境変数を EUC-JP にしてやるとうまく変換できました(@locale
でもいいようです).

これは glib の仕様なんでしょうか,それともバグ? ドキュメント
を見てみたのですが,よくわかりませんでした.どなたかご存じで
あれば教えてください.

よろしくお願いします.
-- 
Taku YASUI <tach@xxxxxxxxxxxx>