Цитата:
Сообщение от KiriX
Только я что-то совсем не понимаю, где среди множества файлов PseuWoW - начало?
|
в любой программе на с/с++ "начало" это функция main
Цитата:
Сообщение от KiriX
Может, дело в том, что работаем мы с UTF8, а не cp1251? Я не нашёл нормального преобразователя с UTF8 для консоли...
|
а, ну если там используется UTF-8, то придется конвертировать текст из этой кодировки в OEM
Я как-то писал такую функцию, пример взят из MSDN, там идет сперва идет конвертация в юникод, а потом в 866.
Конечно можно написать функцию попроще, но эта работает и главное что она универсальная, можно ее за 5 сек исправить для преобразования любой другой кодировки опять же в любую другую -). Всего лишь поменять "CP_UTF8" и "866".
Да, и не забыть что строку после использования нужно удалять руками, или написать маленький класс обертку, для автоматического удаления буфера
Код:
char* str_utf8_to_866(BYTE *buf)
{
wchar_t* pResw = 0;
char* pRes = 0;
int res_len = 0;
res_len = MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)buf, -1, 0, 0);
if (!res_len)
return NULL;
pResw = new wchar_t[res_len];
if (!MultiByteToWideChar(CP_UTF8, 0, (LPCSTR)buf, -1, pResw, res_len))
{
delete[] pResw;
return NULL;
}
res_len = WideCharToMultiByte(866, 0, pResw, -1, 0, 0, 0, 0);
if (!res_len)
return 0;
pRes = new char[res_len];
if (!pRes)
return NULL;
if (!WideCharToMultiByte(866, 0, pResw, -1, pRes, res_len, 0, 0))
{
delete[] pRes;
return NULL;
}
delete[] pResw;
return pRes;
}