Здравствуйте, Makht, Вы писали:
M>Тебе нужно преобразовать твою WideChar строку в мильтибайт строку в чарсете UTF-8.
M>т.е. все что нужно это заменить вызова макроса W2A на вызов функции WideCharToMultibyte и соответствующими параметрами.
M>Макрос W2A кстати тоже ее вызывает, но конвертирает в пультибайт строку в чарсете, который у тебя в реестре прописан на дефолтный (скорее всего 1251 иои 1252.)
Ну да. так и было сделано.
CStringA UTF16toUTF8(const CStringW& utf16)
{
CStringA utf8;
int len = WideCharToMultiByte(CP_UTF8, 0, utf16, -1, NULL, 0, 0, 0);
if (len>1)
{
char *ptr = utf8.GetBuffer(len-1);
if (ptr) WideCharToMultiByte(CP_UTF8, 0, utf16, -1, ptr, len, 0, 0);
utf8.ReleaseBuffer();
}
return utf8;
}