UTF-8 Resource richtig laden
-
Hallo,
weiß jmd wie man folgende Zeichen "Кири́ллица öüa" aus einer Resource in MFC richtig laden kann? Die Resource als solches (html Resource) hab ich als Unicode UTF-8 ohne Signatur abgespeichert.
LPSTR lpcHtml = static_cast<LPSTR>(LockResource(hHeader));
in lpcHtml steht danach leider nichts brauchbares. ""КириÌллица
üöä" liefert mir lpcHtmlAuch wenn ich danach versuche diesen Strig zu konvertieren von UTF-16 to UTF-8 (weil Windows intern mit UTF-16 arbeitet) kommt nichts brauchbares heraus.
Hierzu verwende ich diese Funktionen:
http://www.codeproject.com/KB/string/utfConvert.aspxWenn ich CString test ("Кири́ллица öüa") schreibe und anschließend diesen konvertiere mit UTF-16-to-UTF-8 dann funktioniert es auch; aber nicht aus einer Resource heraus.
Vielleicht hat jmd ein paar wertvolle Tipps.
LG
Markus
-
wenn ich die geladene Resource in ein ByteArray umwandle kommen folgende Zahlen zum Vorschein:
LPSTR lpcHtml = static_cast<LPSTR>(LockResource(hHeader)); CString rString = CString(lpcHtml); CByteArray cbyte; cbyte.SetSize(rString .GetLength()); memcpy(cbyte.GetData(),rString , (rString .GetLength())); UINT eins = cbyte.GetAt(0); //ist 239 UINT zwei = cbyte.GetAt(1); //ist 0 UINT drei = cbyte.GetAt(2); //ist 187 UINT vier = cbyte.GetAt(3); //ist 0 UINT fünf = cbyte.GetAt(4); //ist 191
-
Markus W. schrieb:
wenn ich die geladene Resource in ein ByteArray umwandle kommen folgende Zahlen zum Vorschein:
LPSTR lpcHtml = static_cast<LPSTR>(LockResource(hHeader)); CString rString = CString(lpcHtml); CByteArray cbyte; cbyte.SetSize(rString .GetLength()); memcpy(cbyte.GetData(),rString , (rString .GetLength()));
richtig sind die Zahlen natürlich
UINT eins = cbyte.GetAt(0); //ist 208 UINT zwei = cbyte.GetAt(1); //ist 0 UINT drei = cbyte.GetAt(2); //ist 97 UINT vier = cbyte.GetAt(3); //ist 1 UINT fünf = cbyte.GetAt(4); //ist 208
hatte zuvor vergessen die BOM beim UTF-8 zu löschen.