Umlaute in XML-Datei schreiben

Still in use?

Moderator: Moderatoren

Antworten
bendixen
Rookie
Rookie
Beiträge: 15
Registriert: Mi, 27. Jun 2012 12:35

Umlaute in XML-Datei schreiben

Beitrag von bendixen » Do, 26. Mär 2015 9:31

Für den SEPA-Zahlungsverkehr sind die Umlaute und ß zulässig, ich verzweifle momentan daran, diese in die XML-Datei hineinzubekommen. Wer kann mir helfen?

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14504
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Umlaute in XML-Datei schreiben

Beitrag von brandelh » Do, 26. Mär 2015 10:24

zunächst musst du klären, was du für einen Zeichensatz liefern musst.

Clipper nutzt OEM Zeichen, falls du ANSI abliefern musst, ist es am einfachsten die Zeichen per CHR() Code von Ansi anzugeben (die sehen unter DOS anders aus !)
Xbase++ würde dies per Funktion erledigen, aber mit Clipper muss man das selbst erledigen ;-)

OEM => ANSI

Code: Alles auswählen

ä = chr(132) => chr(228)
ö = chr(148) => chr(246)
ü = chr(129) => chr(252)
Ä = chr(142) => chr(196)
Ö = chr(153) => chr(214)
Ü = chr(154) => chr(220)
ß = chr(225) => chr(223)

Beispiel:
function Oem2Ansi(cString)
    cString := StrTran(cString,chr(132),chr(228))
    cString := StrTran(cString,chr(148),chr(246))
    cString := StrTran(cString,chr(129),chr(252))
    cString := StrTran(cString,chr(142),chr(196))
    cString := StrTran(cString,chr(153),chr(214))
    cString := StrTran(cString,chr(154),chr(220))
    cString := StrTran(cString,chr(225),chr(223))
return cString
sollte funktionieren, eventuelle Tippfehler oder Zahlendreher bitte selbst entfernen, ich habe das hier frei geschrieben ohne zu kompilieren. ;-)

PS: wenn du eine UTF-8 Datei liefern musst, wird es schwieriger ... eventuell kannst du aber auch im Header der Datei den OEM Zeichensatz festlegen,
sowas sollte in den Beschreibungen zu der Übergabeschnittstelle stehen.
Gruß
Hubert

bendixen
Rookie
Rookie
Beiträge: 15
Registriert: Mi, 27. Jun 2012 12:35

Re: Umlaute in XML-Datei schreiben

Beitrag von bendixen » Do, 26. Mär 2015 10:51

Danke für die Antwort, nur war/ist das meine übliche Konvertierung. SEPA verlangt XML mit UTF-8. Beispielweise ersetze ich das Hochkomma (') mit strtran(xxx,,"'","'") und das kaufmännische Und (&) mit strtran(xxx, "&","&"). Nur für die Umlaute und das ß habe ich keine Lösung.

georg
Foren-Administrator
Foren-Administrator
Beiträge: 2174
Registriert: Fr, 08. Feb 2008 21:29

Re: Umlaute in XML-Datei schreiben

Beitrag von georg » Do, 26. Mär 2015 11:05

Liebe Grüsse aus der Eifel,

Georg S. Lorrig
Vorsitzender des Deutschsprachige Xbase-Entwickler e. V.
Redakteur der Wiki des Deutschprachigen Xbase-Entwickler e.V.

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14504
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Umlaute in XML-Datei schreiben

Beitrag von brandelh » Do, 26. Mär 2015 11:15

deine Übersetzung ( strtran(xxx,,"'","'")) ist HTML code, kein UTF-8 !

Am einfachsten du nutzt einen Editor, der UTF-8 schreiben kann, tippst die fraglichen Zeichen ein und speicherst unter UTF-8.
Dann siehst du was du ersetzten musst.
Die Übersetzung NACH UTF-8 geht mit StrTran(), der Rest wird schwieriger ... eventuell hat hier auch schon jemand eine UTF-8 Funktion hinterlegt, dann aber wohl für ANSI.

Grundregel, alle 7-Bit Zeichen (also bis chr(127)) sind in allen Zeichensätzen (OEM, ANSI, UTF-8) gleich.
Alles was höher liegt, muss umgesetzt werden falls es für deine Aufgabe relefant ist.

Hier ist eine genaue Erklärung

:arrow: http://de.wikipedia.org/wiki/UTF-8

Beispiel ä:

Buchstabe ä => C3 A4 HEX, d.h. chr(195)+chr(164) (Umrechnung von HEX nach Dezimal : A = 10, A4 = 10*16+4, C=12, C3=12*16+3

Meine Funktion von oben kann man leicht umstellen auf Oem2UTF8:

Code: Alles auswählen

cString := StrTran(cString,chr(132),chr(228)) => cString := StrTran(cString,chr(132),chr(195)+chr(164))
Wenn ich die Erläuterungen richtig gelesen habe, sollte es keine Probleme mit dem Zahlenraum geben, aber garantieren kann ich das nicht.
Es bleibt eine Fleißaufgabe ;-)

PS: Mit Xbase++ nutzt man dazu Windows API Funktionen, die kann man aber aus Clipper wohl nicht aufrufen. Allerdings sollten es auch nicht allzuviele Zeichen sein.
Gruß
Hubert

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14504
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Umlaute in XML-Datei schreiben

Beitrag von brandelh » Do, 26. Mär 2015 11:25

georg hat geschrieben:Hallo,
dann schaue doch mal hier nach:http://rishida.net/tools/conversion/
geniales Teil !

Zeichen: ä ö ü ß Ä Ö Ü " ! '
UTF-8 HEX: C3 A4 20 C3 B6 20 C3 BC 20 C3 9F 20 C3 84 20 C3 96 20 C3 9C 20 22 20 21 20 27

20 = Blank = chr(32), somit ...

ä = C3 A4
ö = C3 B6
ü = C3 BC
ß = C3 9F
Ä = C3 84
Ö = C3 96
Ü = C3 9C
" = 22 (bleibt gleich)
! = 21 (bleibt gleich)
' = 27 (bleibt gleich)

Vorsicht ist mit < und > geboten, da die unter XML Feldbegrenzer sind, hier ist deine HTML Zeichenersetzung nötig, bei ' sollte das nicht nötig sein.

PS: gibt es eine Adresse an die man solche Dateien zum Syntaxcheck senden kann ohne dass etwas ausgelöst wird ?
Gruß
Hubert

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14504
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Umlaute in XML-Datei schreiben

Beitrag von brandelh » Do, 26. Mär 2015 11:27

Kann Clipper damit umgehen ?

chr( 0xC3 ) wäre natürlich eine enorme Schreiberleichterung. Xbase++ kann es ...
Gruß
Hubert

Benutzeravatar
Tom
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 7253
Registriert: Do, 22. Sep 2005 23:11
Wohnort: Berlin
Kontaktdaten:

Re: Umlaute in XML-Datei schreiben

Beitrag von Tom » Do, 26. Mär 2015 11:30

Ja, SEPA verlangt UTF8 - so steht es auch im Header der Datei(en). In Pablos "OT4XB" ist eine UTF8-Konvertierungsfunktion enthalten, Hubert hatte hier auch mal ein Beispiel gepostet, wenn ich mich recht erinnere.

ABER. Der SEPA-Standard unterstützt zwar auf der technischen Ebene Umlaute, aber die Bankensoftware(n) tun es überwiegend nicht. Bei den Verwendungszwecken dürfen eigentlich keine Umlaute und Sonderzeichen verwendet werden. Einige Programme konvertieren das automatisch beim Einlesen der SEPA-Dateien (oder auch bei der Eingabe im Online-Banking), andere nicht. Deshalb sollte man den Zeichensatz untersuchen, der sich z.B. aus Empfängerdaten und Verwendungszwecken ergibt - und z.B. Umlaute und andere Sonderzeichen ganz klassisch umwandeln (ä -> ae, é -> e usw.). Mit dem Ergebnis dieser Operation kann man auch direkt arbeiten, da der 7-Bit-ASCII-Zeichensatz in UTF8 enthalten ist.

Mehr dazu z.B. hier:

http://www.hettwer-beratung.de/sepa-spe ... ungszweck/
Herzlich,
Tom

Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 14504
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Kontaktdaten:

Re: Umlaute in XML-Datei schreiben

Beitrag von brandelh » Do, 26. Mär 2015 12:45

Tom hat geschrieben:Ja, SEPA verlangt UTF8 - so steht es auch im Header der Datei(en). In Pablos "OT4XB" ist eine UTF8-Konvertierungsfunktion enthalten, Hubert hatte hier auch mal ein Beispiel gepostet, wenn ich mich recht erinnere.
Wir sind hier im CLIPPER Bereich, da steht das nicht zur Verfügung, aber die komplette Umsetzung nach 7bit ist am Einfachsten und wenn die Banken das so wollen 8)
Gruß
Hubert

bendixen
Rookie
Rookie
Beiträge: 15
Registriert: Mi, 27. Jun 2012 12:35

Re: Umlaute in XML-Datei schreiben

Beitrag von bendixen » Do, 26. Mär 2015 15:35

Hallo an Euch alle,

mein Problem ist nun folgendermaßen gelöst:

strtran(strtran(strtran(strtran(strtran(strtran(strtran(strtran(strtran(infotext,;
'ä',chr(195) + chr(164)),'ö',chr(195) + chr(182)),'ü',chr(195) + chr(188)),;
'Ä',chr(195) + chr(132)),'Ö',chr(195) + chr(150)),'Ü',chr(195) + chr(156)),;
'ß',chr(195) + chr(159)),;
"&","&"),"'","&apos;")

Anmerkung: In der aktuellen SEPA-Vorschrift 2.8 sind Umlaute und das ß in der Zahlungsverkehrsdatei xxx.XML zulässig, ebenso & und Hochkomma.

Mein ursächliches Problem war die Verwendung der Codepage 437 anstelle 850.

Benutze seit 1986 erst dBase III, dann Clipper, zwischenzeitlich kurz (1999) und jetzt erneut Xbase seit 2013.

Ich bedanke mich für Euer Hilfebemühen.

Grüße aus Hamburg, Jürgen

Benutzeravatar
schmä
Rookie
Rookie
Beiträge: 10
Registriert: Sa, 28. Mär 2015 16:06

Re: Umlaute in XML-Datei schreiben

Beitrag von schmä » Sa, 28. Mär 2015 16:16

Rishida ist ja mal ein super Tool!
Bin dann mal tanzen...

Antworten