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