Вот есть такой кусок исходника:
#define UNICODE
#include <windows.h>
int main()
{
const char *text = "Русские буковки";
wchar_t *text_1251 = new wchar_t(strlen(text) + 1);
memset(text_1251, 0, (strlen(text) + 1) * sizeof(wchar_t));
MultiByteToWideChar(1251, 0, text, strlen(text), text_1251, strlen(text) + 1);
wchar_t *text_utf16 = new wchar_t(strlen(text) + 1);
memset(text_utf16, 0, (strlen(text) + 1) * sizeof(wchar_t));
MultiByteToWideChar(CP_UTF8, 0, text, strlen(text), text_utf16, strlen(text) + 1);
MessageBox(NULL, text_1251, L"", MB_OK);
MessageBox(NULL, text_utf16, L"", MB_OK);
return 0;
}
При запуске этой гадости сначала вылазит сообщение с русскими буковками, а затем с черными квадратиками. А винда, по идее, умеет в Юникод. Но все равно квадратики. Это все происходит, если здесь внизу поставить русский язык. Если английский, то во втором случае русские буковки работают (да и вообще любые). Почему так?
А линукс тут при том, что винда мастдай, а линукс — нет.
P.S. разработка под винду — это боль.