Я использую FreeType2 в одном из своих проектов. Чтобы отобразить письмо, мне нужно предоставить двухбайтовый код символа Unicode. Коды символов, которые читает программа, имеют однобайтовый формат ASCII. Это не представляет проблемы для кодов символов ниже 128 (коды символов такие же), но другие 128 не совпадают. Например:
'a' в ASCII - это 0x61, 'a' в Unicode - это 0x0061 - это нормально
'ą' в ASCII - это 0xB9, 'ą' в Unicode - 0x0105 - совершенно другое
Я пытался использовать там функции WinAPI, но, должно быть, что-то делаю не так. Вот образец:
unsigned char szTest1[] = "ąółź"; //ASCII format
wchar_t* wszTest2;
int size = MultiByteToWideChar(CP_UTF8, 0, (char*)szTest1, 4, NULL, 0);
printf("size = %d\n", size);
wszTest2 = new wchar_t[size];
MultiByteToWideChar(CP_UTF8, 0, (char*)szTest1, 4, wszTest2, size);
printf("HEX: %x\n", wszTest2[0]);
delete[] wszTest2;
Я ожидаю, что будет создана новая широкая строка без NULL в конце. Однако переменная size всегда равна 0. Есть идеи, что я делаю не так? А может есть способ решить проблему попроще?