Страницы

Поиск по вопросам

воскресенье, 8 марта 2020 г.

C++ UTF-8 в CP866

#cpp #кодировка #visual_cpp #перекодировка


Пишу библиотеку для принтера. На вход подается текст в формате UTF-8. Принтер печатает
кириллицу в формате CP866(кириллица). Как преобразовать UTF-8 в CP866? Возможно есть
специальные функции?
    


Ответы

Ответ 1



ifstream file("text.txt"); char pszCode[30]; file.getline(pszCode, 30); BSTR bstrWide; char pszAnsi[50]; int nLength; char* text = ""; nLength = MultiByteToWideChar(CP_UTF8, 0, pszCode, strlen(pszCode) + 1, NULL, NULL); bstrWide = SysAllocStringLen(NULL, nLength); MultiByteToWideChar(CP_UTF8, 0, pszCode, strlen(pszCode) + 1, bstrWide, nLength); nLength = WideCharToMultiByte(CP_OEMCP, 0, bstrWide, -1, NULL, 0, NULL, NULL); WideCharToMultiByte(CP_OEMCP, 0, bstrWide, -1, pszAnsi, nLength, NULL, NULL); SysFreeString(bstrWide); cout << pszAnsi << endl; В общем использовал в этот метод, как посоветовал VladD, в принципе все работает, хотя конечно я так и не понял, как работают эти две функции до конца. Но все равно спасибо!

Комментариев нет:

Отправить комментарий