-
SQL XML_CLOB_FILE CCSID
Hallo Forum!
Ich habe einige XMLs in einer Tabelle gespeichert, nun möchte ich diese wieder ins IFS schreiben, was auch funktioniert, jedoch steht im Header immer
?xml version="1.0" encoding="IBM850"
Da ich die Dokumente verschicken soll, hätte ich gerne UTF-8 da drinnen stehen.
Habe versucht die XML_CLOB_FILE Variable anders zu deklarieren, aber das ändert nichts.
In der QAQQINI steht auch *DEFAULT drinnen.
Wie bekomme ich utf-8 ins Dokument rein??
Danke!
LG Peter
[/COLOR]
Wer andren eine Bratwurst brät, hat ein Bratwurstbratgerät!
-
SQL ändert nichts am Inhalt eines XML-Dokuments, da dies reine Textinformation ist.
Hier hilft nur, den Inhalt der XML erst mal in eine UCS2-Variable ins Programm einzulesen (CLOB), den gewünschten Text ändern und anschließend die Datei per CLOB_FILE-Variable dann zu schreiben.
-
Nicht am Inhalt, aber am Header. Im Typ XML in der Datenbank ist keine Headerinformation drinnen und wird beim Schreiben in eine Filevariable eingefügt. Ich lese das XML mit GET_XML_FILE() ein, der Header im IFS ist xml version="1.0" encoding="UTF-8", wenn ich es dann wieder rausschreibe, steht IBM850 anstelle von UTF-8 drinnen.
Wer andren eine Bratwurst brät, hat ein Bratwurstbratgerät!
-
Wenn der Datentyp der Spalte in der Tabelle XML ist, und bei der Spalten-Definition keine CCSID angegeben wurde, wird die CCSID aus der QAQQINI verwendet, d.h. die Daten sind per Default UTF-8.
Wenn Du mit embedded SQL und XML_CLOB_FILE das Dokument ins IFS schreibst erfolgt die Ausgabe als UTF-8 Daten.
Sofern Deine XML-Daten alphanumerisch (EBCDIC) oder auch Double Byte z.B. UCS2 sind, kannst Du das XML-Dokument, mit XMLPARSE und XMLSERIALIZE in ein UTF-8 Daten konvertieren.
XMLPARSE prüft ob es sich um gültige XML-Daten handelt und konvertiert diese in ein internes Format.
XMLSERIALIZE konvertiert aus dem internen Format in einen alphanumerischen String.
Beispiel:
Code:
Values(XMLSerialize(
XMLParse(Document 'ABCDEDer Bär frißt öfter grüne Äpfel')
as VarChar(1024) ccsid 1208 including XMLDeclaration));
Including XMLDeclaration bewirkt an dieser Stelle nur, dass noch eine XML-Deklaration hinzugefügt wird. Wird es nicht angegeben, wird keine Deklaration hinzugefügt.
UCS2 ist übrigens ein Double Byte Character Set und verlangt folglich einen DBCLOB (Double Byte Large Object)!
Birgitta
-
Gute Erklärung, geht am Problem aber vorbei.
In der XML steht eine Encoding-Anweisung, z.B.:
?xml version="1.0" encoding="ISO-8859-1" ?
Bei der Ausgabe der XML-Datei ins IFS mit UTF8 soll genau diese Anweisung nun angepasst werden:
?xml version="1.0" encoding="UTF-8" ?
Und genau dies passiert eben nicht, da SQL ja den textlichen Inhalt nicht verfälschen darf.
Wenn also eine Codewandlung durchgeführt wird, so ist die Process-Anweisung eben manuell (also per Code) selber durchzuführen.
-
Also wenn ich das Dokument mit xmlserialize und xmlparse in ein XML_CLOB_FILE zu schreiben versuche, sagt der Compiler, dass die Variable nicht kompatibel ist.
Mach ich
Code:
select xmlserialize(xmlparse(Document xml_document ....
Kommt Argument 1 der Funktion xmlparse ungültig.
Wenn ich
Code:
select xmlserialize(xmlparse(Document xmlserialize(xml_document as varchar(1024) ccsid 1208) from file
mache, dann steht wieder IBM850 im File.
Das original XML hat im Header UTF-8 stehen.
Ich möchte eigentlich nur das original XML wieder zurück.
Wer andren eine Bratwurst brät, hat ein Bratwurstbratgerät!
-
"Ich möchte eigentlich nur das original XML wieder zurück."
Warum speicherst du dieses nicht einfach separat in einem BLOB?
-
Ok, ich hatte da beim Testen einen Fehler.
Es ist genauso wie Birgitta geschrieben hat und funktioniert jetzt.
Verzeihung...
Danke!
Wer andren eine Bratwurst brät, hat ein Bratwurstbratgerät!
Similar Threads
-
By svit in forum NEWSboard Programmierung
Antworten: 9
Letzter Beitrag: 02-03-17, 08:04
-
By Joe in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 20-09-16, 15:05
-
By ILEMax in forum NEWSboard Programmierung
Antworten: 6
Letzter Beitrag: 10-12-14, 14:24
-
By Robi in forum NEWSboard Programmierung
Antworten: 8
Letzter Beitrag: 15-08-14, 16:22
-
By Liebhoff in forum IBM i Hauptforum
Antworten: 11
Letzter Beitrag: 04-09-02, 09:27
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks