Seite 1 von 1

ASXML mit UTF-8 benutzen

Verfasst: Di, 19. Apr 2016 9:28
von Benz
Hi,

ich habe eine UTF-8 XML-Datei von einem anderen Programm und würde diese gerne mit ASXML benutzen. Leider interpretiert ASXML z.B. "ß" als irgendwelche unsinnigen Zeichen. Ich habe einfach mal blind versucht den Wert, den ich aus der XML bekomme mit ConvToAnsiCP, ConvToOemCP() und auch mit Str2UTF8 aus einer geladenen Bibliothek hier aus dem Forum zu übersetzen, hat leider alles keine Wirkung gezeigt. Wenn ich die XML-Datei mit notepad++ anzeigen lasse, stehen die Sonderzeichen so drin wie sie sein sollen: "Wienerstraße " etc..

Muss ich vielleicht bei ASXML irgendeine Einstellung vornehmen um zu sagen "interpretiere die XML mit dem UTF-8 Zeichensatz" ?

Re: ASXML mit UTF-8 benutzen

Verfasst: Di, 19. Apr 2016 9:47
von brandelh
du musst die UTF8 Datei (also die gesamte XML) zuerst in ANSI umwandeln (und hoffen dass der Zeichensatz ausreicht) ...
Ich nutze dazu die Funktion von Pablo aus der OT4XB

Code: Alles auswählen

cUtf8ToAnsi(cUtf8) -> cAnsi
cUtf8ToOem(cUtf8) -> cOem

cAnsiToUtf8( cAnsi ) -> cUtf8
cOemToUtf8(cOem) -> cutf8
Natürlich solltest du dann auch die Zeichensatzinfo oben gegen Ansi austauschen ...
und falls die XML gespeichert werden soll, NICHT MEMOWRIT() nutzen !

In den XbToolsIII gibt es eine Funktion zum Schreiben von Strings in Files, ich nutze meine eigene hier in der entgegengesetzten Richtung:

Code: Alles auswählen

         // umsetzen UTF8

         IF IsAnsi()
            cXML := cAnsiToUtf8(cXML)
         ELSE
            cXML := cOemToUtf8(cXML)
         ENDIF

         Str2Disk(cZiel,cXML)

Re: ASXML mit UTF-8 benutzen

Verfasst: Mo, 05. Sep 2016 10:08
von Rudolf
Hallo Hubert,
danke, cUtf8ToAnsi() war die Lösung, habe es schon mal verwendet aber nicht das gewünschte Ergebnis erhalten, jetzt klappt es. Für das Speichern verwendet ich normal auch einen eigene Funktion so wie Deine.
Grüße
Rudolf