ASXML mit UTF-8 benutzen

Konzeptionelles, Technisches, Termine, Fragen zum Hersteller usw.

Moderator: Moderatoren

ASXML mit UTF-8 benutzen

Beitragvon 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" ?
Benz
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 413
Registriert: Mo, 30. Mai 2011 15:06

Re: ASXML mit UTF-8 benutzen

Beitragvon 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
brandelh
Foren-Moderator
Foren-Moderator
 
Beiträge: 13498
Registriert: Mo, 23. Jan 2006 21:54
Wohnort: Germersheim

Re: ASXML mit UTF-8 benutzen

Beitragvon 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
Benutzeravatar
Rudolf
Programmier-Gott
Programmier-Gott
 
Beiträge: 1265
Registriert: Di, 03. Jan 2006 0:03
Wohnort: Salzburg/Österreich


Zurück zu Allgemeine Fragen

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast