ASXML mit UTF-8 benutzen

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 440
Registriert: Mo, 30. Mai 2011 15:06
Danksagung erhalten: 1 Mal

ASXML mit UTF-8 benutzen

Beitrag 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" ?
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15689
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: ASXML mit UTF-8 benutzen

Beitrag 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)
Gruß
Hubert
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
Beiträge: 1418
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: ASXML mit UTF-8 benutzen

Beitrag 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
Antworten