Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

ASXML mit UTF-8 benutzen

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

Antworten
Benz
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 417
Registriert: Mo, 30. Mai 2011 15:06

ASXML mit UTF-8 benutzen

Beitrag von Benz » Di, 19. Apr 2016 9:28

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: 13764
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: ASXML mit UTF-8 benutzen

Beitrag von brandelh » Di, 19. Apr 2016 9:47

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: 1300
Registriert: Mo, 02. Jan 2006 23:03
Wohnort: Salzburg/Österreich
Kontaktdaten:

Re: ASXML mit UTF-8 benutzen

Beitrag von Rudolf » Mo, 05. Sep 2016 10:08

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