Konvertierung von ANSI String nach UTF-8 und URL Encoded String
////////////////////////////////////////////////////////////////
// Converting CString to UTF-8
char m[MAXBUFFERLEN] = {0};
WCHAR w[MAXBUFFERLEN] = {0};
CString osUTF8String;
int erg = 0;
strcpy(m, m_osSalesOrderXML);
erg = MultiByteToWideChar(CP_ACP, 0, m, -1, w, sizeof(w) / sizeof(WCHAR));
erg = WideCharToMultiByte(CP_UTF8, 0, w, -1, m, sizeof(m), 0, 0);
osUTF8String = m;

////////////////////////////////////////////////////////////////
CString EncodeCStr2URLEncoded(CString str) {
int len = str.GetLength();
char* buff = new char[len + 1];
strcpy(buff, str);
CString ret = "";
for(int i=0;i<len;i++) {
if(isOrdinaryChar(buff[i])) {
ret = ret + buff[i];
}else if(buff[i] == ' ') {
ret = ret + "+";
}else {
char tmp[4];
sprintf(tmp, "%%%02x", (unsigned char) buff[i]);
ret = ret + tmp;
}
}
delete[] buff;
return ret;
} // EncodeCStr2URLEncoded

////////////////////////////////////////////////////////////////
bool isOrdinaryChar(char c) {
char ch = tolower(c);
if(ch == 'a' || ch == 'b' || ch == 'c' || ch == 'd' || ch == 'e'
|| ch == 'f' || ch == 'g' || ch == 'h' || ch == 'i' || ch == 'j'
|| ch == 'k' || ch == 'l' || ch == 'm' || ch == 'n' || ch == 'o'
|| ch == 'p' || ch == 'q' || ch == 'r' || ch == 's' || ch == 't'
|| ch == 'u' || ch == 'v' || ch == 'w' || ch == 'x' || ch == 'y'
|| ch == 'z' || ch == '0' || ch == '1' || ch == '2' || ch == '3'
|| ch == '4' || ch == '5' || ch == '6' || ch == '7' || ch == '8'
|| ch == '9') {
return true;
}
return false;
} // isOrdinaryChar


Und hier der umgekehrte Weg UTF-8 nach ANSI String:

////////////////////////////////////////////////////////////////
// Converting UTF-8 to ANSI
CString osAnsiString;
char m[MAXBUFFERLEN] = {0};
WCHAR w[MAXBUFFERLEN] = {0};
int erg = 0;
strcpy(m, m_osReceivedXML);
erg = MultiByteToWideChar(CP_UTF8, 0, m, -1, w, sizeof(w) / sizeof(WCHAR));
erg = WideCharToMultiByte(CP_ACP, 0, w, -1, m, sizeof(m), 0, 0);
m_osAnsiString = m;

Kommentieren