Unicode und ReadFile(...
-
Hallo alle miteinander,
ich habe eine ziemlich simple XML-Datei:
<?xml version="1.0" encoding="utf-8" ?> <Language Sprache="Japanisch"> <WindowTitle>日本語</WindowTitle> </Language>in dieser stehen 3 japanische Zeichen, welche wie ich gerade sehe hier nicht angezeigt werden können. Die XML-Datei liegt also im Unicode-Format vor. Diese möchte nun Zeilenweise auslesen um bei einer Suchanfrage z.B.: nach <WindowTitle> den Value dazu zu erhalten (also die japan. Schriftzeichen).
Ich habe dabei erstmal allgemein versucht die XML-Datei in einer MessageBox darzustellen, was leider nicht richtig klappt:void ReadLangFile() { HANDLE hFile; hFile = CreateFile(L"Japanisch.xml", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); int iFileLength = GetFileSize(hFile, NULL); PBYTE pBuffer = (PBYTE)malloc(iFileLength+2); DWORD dwBytesRead; ReadFile(hFile, pBuffer, iFileLength, &dwBytesRead, NULL); CloseHandle(hFile); pBuffer[iFileLength] = '\0'; pBuffer[iFileLength+1] = '\0'; LPCTSTR cText[1024]; MultiByteToWideChar(CP_ACP, 0, (LPCSTR)pBuffer, -1, (LPWSTR)cText, 1024); MessageBox(0, (LPCTSTR)cText, (LPCTSTR)L"", MB_OK); }Wie schaffe ich es nun in der DialogBox auch den Unicode-Text anzeigen zu lassen. (#define UNICODE ist im Code gesetzt).
Ich hatte es bereits mit XPath des MSXML-Parsers probiert, aber da bin ich nicht weit gekommen. Wenn mir also jemand zeigen könnte, wie man diesen korrekt einbindet und eine simple Suche nach irgendetwas in der XML-Datei ausführt wäre ich auch sehr dankbar.MfG zco
-
zco schrieb:
Die XML-Datei liegt also im Unicode-Format vor.
Nein. Die Datei ist 7Bit-ASCII. Die japanischen Zeichen sind offenbar als HTML-character reference codiert.
Du bräuchtest etwas wie HtmlDecode, aber AFAIK gibt es das für WinAPI nicht.
-
Im Internet-Explorer zeigt der die Zeichen aber korrekt an.
-
zco schrieb:
Im Internet-Explorer zeigt der die Zeichen aber korrekt an.
Der Internetexplorer zeigt auch < korrekt an. Das liegt daran, dass er als Browser dazu da ist, HTML-Entitys zu decodieren.
-
Also ist es kurz gesagt nicht möglich die Daten aus so einer XML-Datei auszulesen und dann auf einem Fenster korrekt darzustellen?

-
Natürlich ist es möglich, du musst nur deine XML Datei als Unicodestring vorliegen haben und dann manuell parsen. Dabei würde die & #26085; -Sequenz(8 Zeichen) in den 16-Bit-Wert 0x65E5 umgewandelt werden, um ein gültiges Unicode-Zeichen darzustellen. Danach kannst du den String mit jeder unicodefähigen Funktion benutzen.