2002/03/31 - エラーの件

掲示板の文字コードの話。具体的には

// (Unicode->SJIS 1 文字変換の例)
if(setlocale(LC_ALL, "Japanese") == NULL)
{
    if(setlocale(LC_ALL, ".ACP") == NULL)
    {
        // エラー
    }
}
int result = wcstombs(sjis, unicode, 3);

で,setlocale が 2 つともエラーになっている。これが通らないっていうのはどういう場合なんだろう。で,今開発版に上がっているのは,

// (Unicode->SJIS 1 文字変換の例)
int result = ::WideCharToMultiByte(932, 0, unicode, 1, sjis, 2, NULL, NULL);
if(result == 0)
{
    result = ::WideCharToMultiByte(CP_ACP, 0, unicode, 1, sjis, 2, NULL, NULL);
    if(result == 0)
    {
        // エラー
    }
}

である。wcstombs は内部的に setlocale されたコードページを使って WideCharToMultiByte を呼び出しているので,やっていることはほとんど変わらない。前者がうまくいかないならば後者もダメそうだが。他に手が見つからない。

コメントする