I change the function AsciiToUnicode to:

wchar_t* ASCIIToUnicode(const char *ascii )
{
//first it would be best to discover where the '\0' is located
int i, length;
length = strlen(ascii);
for(i=0;i<length;++i)
{
if(ascii[i]=='\0')
break;
}
++i;
//now we can make the actual Unicode array
char *unicode = (char*)calloc(i,sizeof(wchar_t));
// if(unicode==NULL)
// return 1;
for(int j=0;j<i;++j)
{
unicode[j*2]=ascii[j];
unicode[j*2+1]='\0';
}
return (wchar_t*)unicode;
}

Now it prints out all, but the Cyrillic shows with hieroglyphs