10. maj 2007 - 17:36Der er
5 kommentarer og 1 løsning
ANSI til UTF-8
Jeg har et lille problem!!
Først en lille pre. spørgsmål, ret mig her hvis jeg tager fejl: Unicode = UTF-8 = Multibyte Chracters og ANSI = Wide characters
Er det korrekt?
Når men til mit problem: Jeg vil gerne have konverteret fra ANSI til UTF-8, hvordan gør jeg det?
Jeg har lavet følgende men jeg syntes ikke det virker!! std::string str = "Streng der er modtaget!!"; WCHAR *pstrRet = new WCHAR[str.size()]; WideCharToMultiByte(CP_ACP, 0, (LPCWSTR)str.c_str()/*ANSI*/, -1, (LPSTR)pstrRet, sizeof(pstrRet), 0, 0); //From ANSI to UTF-8
Mit problem er at den streng jeg modtager "bare" bliver konverteret til Ansii (char *), så jeg ved ikke helt hvad jeg får(og dog!!)! Hvis man evt. kunne checke der man får, kunne det være lækkert....laver det i VS8 så jeg har ikke .Net muligheder
long ilen = strlen(str); wchar_t *wstr = new wchar_t[ilen+1]; memset(wstr, 0, sizeof(wchar_t) * ilen); long lLen = MultiByteToWideChar(CP_ACP,0,str,-1,wstr,ilen); str[0] = '\0';//Bare for at sikre at der bliver lagt informationer over i str WideCharToMultiByte ( CP_UTF8, 0, wstr, -1, str, ilen, NULL, NULL ); delete[] wstr; int len = strlen(str);//Er der information - nok!!
void atou(const char* sin, char *sout) { int ix = 0; for(int i = 0; i <= strlen(sin); i++) { int v = (unsigned char)sin[i]; if(v < 128) { sout[ix] = v; ix++; } else { sout[ix] = 0xC0 | (v / 64); ix++; sout[ix] = 0x80 | (v % 64); ix++; } } }
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.