@Hakito

Как вызывать MultiByteToWideChar?

Всем привет!
Мне нужно перевести текст из ASCII в Unicode
Для этого пишу:
setlocale(LC_ALL, "Russian");
        char* c="фывапр";
	int q = CP_ACP;
	int b = MultiByteToWideChar(q, 0, c, -1, 0, 0);
	wchar_t* o = new wchar_t[b];
	MultiByteToWideChar(q, 0, c, -1, o, b);	
	
	printf("%s\n", o);

Выводит: D♦K♦2♦0♦?♦@♦
В настройках проекта стоит многобайтовая кодировка (как я понял, она однобайтовая)
Что нужно изменить, что бы оно нормально переводило?
  • Вопрос задан
  • 2487 просмотров
Решения вопроса 1
@vilgeforce
Раздолбай и программист
Так оно, наверное, нормально и переводит. Только printf не умеет с таким работать. Попробуйте wprintf вместо этого.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@res2001
Developer, ex-admin
Юникодные константы объявляйте так:
wchar_t* c=L"фывапр";
И выводить на консоль с помощью wprintf, как писал Владимир Мартьянов
Ответ написан
Комментировать
@alex-t
Прогр. в команде rco.ru
Преобразование, скорее всего, правильное, если хотите проверить результат без проблем, смотрите в отладчике VisualStudio, а вот если с проблемами, то осваивайте консоль Windows. Там работает только такой извращенный способ:
#include <windows.h>
....
DWORD n;
WriteConsoleW(GetStdHandle(STD_OUTPUT_HANDLE), L"фыва", 4, &n, 0);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы