c ++ - Konverter strengkodning i C-sprog

Indlæg af Hanne Mølgaard Plasc

Problem



Grundlæggende skal jeg konvertere UTF-8-streng til Windows-1256, og jeg gør det ved hjælp af følgende kode:


#include <windows.h>
#include <stdio.h>

char* convert(char* pszStringToConvert)
{
      int len = strlen(pszStringToConvert);  // get string length
      wchar\_t* pwsz = new wchar\_t[len+1];       // allocate storage for temporary UNICODE string
      MultiByteToWideChar(65001,0, pszStringToConvert, len, pwsz, len);
      WideCharToMultiByte(1256,0, pwsz, len, pszStringToConvert, len, NULL, FALSE);
      return pszStringToConvert;
}


int main()
{
     char* arabic ="السلام";
    char* win = convert(arabic);


    printf("\%s
\%",win);

    return 0;
}


Min kilde streng er


arabisk='السلام'


Men desværre bliver min resultatstreng


win=ا٠'سÙ' ا٠...



Hvad gør jeg galt her?

Bedste reference