Страница 1 из 1

UTF8->ANSI

Добавлено: 11 июн 2005, 20:42
Alezis
Как перевести из кодировки UTF8 в ANSI. Причём вот есть код:

Код: Выделить всё

 WCHAR names1[30];
 WCHAR names[] = L"Привет";
 const int nSize = sizeof(names)/sizeof(WCHAR); 
 char szText[nSize + 1];
WideCharToMultiByte(CP_UTF8,0,names, -1, szText, nSize, NULL, NULL); 
MultiByteToWideChar(CP_UTF8,0,szText,-1,names1,20);
Т.е. сначала перевожу юникод в формат UTF8, а потом обратно но выдаёт только полслова, т.е. в names1 содержится "При". Что за лажа кто знает.

Добавлено: 12 июн 2005, 17:30
Eugie
А все просто - буфер маленький. При конверсии WideCharToMultiByte нужно вначале запросить требумый размер буфера, задавая 0 в 6-м параметре, и выделять память динамически. Если все же предпочитаешь массив, то исходи из расчета 3 байта на Unicode-символ (это с гарантией).

Добавлено: 14 июн 2005, 08:54
Alezis
А все просто - буфер маленький.
Есть такая маза. :D