掲示板の文字コードの話。具体的には
// (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 を呼び出しているので,やっていることはほとんど変わらない。前者がうまくいかないならば後者もダメそうだが。他に手が見つからない。