PDA

View Full Version : XML als UTF8 BOM



camouflage
20-04-21, 08:54
Hi Forum,

nur aus Interesse/Neugier.
Ich habe eine XML Datei erhalten, welche ich nicht einlesen konnte. Rückweisung mit RNX0351 und Ursachencode 302, keine externe XML Datei.

Im Notepad++ hab ich dann festgestellt, dass die UTF8 noch einen BOM Zusatz hat. Nach konvertieren in ein normales UTF8 lief das RPG Programm dann auch durch.

Frage jetzt, kennt ihr das auch und wie handelt ihr das? Soll ich mit dem XML Datei-Lieferanten schimpfen?

Danke für die Auskunft.

Andreas_Prouza
20-04-21, 09:26
Wie hast du diese denn eingelesen? Via SQL oder RPG?
Blöde Frage, aber hatte die ursprüngliche XML Datei auch die CCSID 1208?

Fuerchau
20-04-21, 09:54
BOM sind zwei Byte vorneweg, die nur für Textdateien eigentlich wichtig sind. Die eigentliche Kodierung einer XML steht im Header.
Egal ob RPGLE oder SQL, die 2 Bytes müssen leider entfernt werden.

Aktuell finde ich keine Lösung für IBM i. Selbst auf den IBM-Seiten wird vorgeschlagen, die Datei per Notepad++ zu konvertieren.

camouflage
20-04-21, 10:08
Andreas,
wenn ich sie mit wrklnk anschaue, habe ich eine 1252 CCSID drin. Eingelesen hab ich sie mit RPG.
(SQL ist mir für das zu kompliziert, auch wenn ich u.U. mir vllt. ein Problem weniger einhandle)

Baldur,
bleibt vermutlich nur "Schimpfis", wie wir in der Schweiz sagen, übrig. Das Mail hab ich schon vorbereitet.

Fuerchau
20-04-21, 16:41
Die CCSID kommt vom Netserver bei der Kopie via Netzfreigabe.
Wenn im Header der XML dann UTF8 als Encoding steht, musst du auch CCSID 1208 verwenden. Sonst gibts Salat mit den Umlauten und anderen Sonderzeichen. Und den BOM musst du auch noch wegpacken.

Dies ginge auch per RPGLE, in dem du (max. 8MB) mittel CLOB_FILE die Datei als 1208 native einliest und nach Prüfung der 2 Zeichen am Anfang, z.B. X'FFFE' oder x'FEFF', dann die Daten um 2 Bytes verschiebst bevor du den XML-INTO brauchst.

Fuerchau
21-04-21, 12:35
Hinweis von einem noch nicht freigeschalteten User:

"Peder Udesen

Wenn man CCSID 1208 verwendet, dann wird der BOM akzeptiert und ignoriert."

Ich finde dies gut zu wissen.