Wie kann man einen Text nach UTF8 konvertieren?
-
die meisten Lösungen hatten nur den Weg von iso nach utf8, aber nicht von utf8 nach iso.
Die einzige Lösung, die das doch hat, ist diese hier: http://www.gnu.org/software/libiconv/Ich will aber keine ganze library, sondern eigentlich nur eine Funktion, die mein Ergebnis liefert und diese habe ich noch nicht gefunden.
-
vielleischt sowas?
#define LOWER_6_BIT(u) ((u) & 0x003f) #define BIT7(a) ((a) & 0x80) #define BIT6(a) ((a) & 0x40) // Converts UTF-8 to wide char int UTF8ToWcharT (char *lpSrcStr, int cchSrc, wchar_t *lpDestStr, int cchDest) { int nTB = 0; int cchWC = 0; char *pUTF8 = lpSrcStr; char UTF8; while ((cchSrc--) && ((cchDest == 0) || (cchWC < cchDest))) { if (BIT7(*pUTF8) == 0) { if (cchDest) lpDestStr[cchWC] = (wchar_t)*pUTF8; cchWC++; } else if (BIT6(*pUTF8) == 0) { if (nTB != 0) { nTB--; if (cchDest) { lpDestStr[cchWC] <<= 6; lpDestStr[cchWC] |= LOWER_6_BIT(*pUTF8); } if (nTB == 0) cchWC++; } } else { if (nTB > 0) { nTB = 0; cchWC++; } else { UTF8 = *pUTF8; while (BIT7(UTF8) != 0) { UTF8 <<= 1; nTB++; } if (cchDest) lpDestStr[cchWC] = UTF8 >> nTB; nTB--; } } pUTF8++; } return cchWC; }eingaben sind:
- pointer auf den source string (UTF-8)
- länge des source strings
- pointer auf den ausgabespeicher (wchar_t)
- grösse des ausgabespeichersbtw: der code stammt übrigens von 'microsoft' :p
-
jo, danke.
das hilft mir sehr, um noch etwas mehr zu verstehen.vielleicht nutze ich aber jetzt trotzdem eine andere Bibliothek.
und zwar diese: http://www.icu-project.org/userguide/strings.html#cpp_strings_c