[NEWSboard IBMi Forum]
Seite 1 von 2 1 2 Letzte

Hybrid View

  1. #1
    Registriert seit
    Aug 2001
    Beiträge
    2.981
    Was passiert, wenn Du anstatt Single Byte Character Set Double Byte verwendest, d.h. HTTPGETDBCLOB und DBCLOB_FILE und bei der XML-Verarbeitung ebenfalls auf Unicode gehst.

    Anstatt ins IFS zu schreiben und dann mit XML-INTO zu verarbeiten, würde ich das Ergebnis direkt mit SQL und XML_TABLE ermitteln.

    Birgitta
    Birgitta Hauser

    Anwendungsmodernisierung, Beratung, Schulungen, Programmierung im Bereich RPG, SQL und Datenbank
    IBM Champion seit 2020 - 6. Jahr in Folge
    Birgitta Hauser - Modernization - Education - Consulting on IBM i

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.971
    Gib bei den XMLOPTIONS die CCSID 1208 an, dann wird UTF-8 automatisch in die Job-CCSID deiner Zielvariablen umgewandelt.
    Möchtest du ggf. multinational werden, so definiere deine XML-Struktur als Unicode.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.971
    Achja, wenn du anstelle "into : MyFile" direkt in eine CLOB-Variable ausgibst?
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  4. #4
    Registriert seit
    Oct 2016
    Beiträge
    24
    Also die Datei(XML) hat die CCSID 1208. Jedoch tritt bereits in der XML der Fehler mit der Umsetzung auf. Vermutlich importiere ich dann einfach diesen Fehler mit xml-into in meine DS oder?

    Die Idee mit XMLOPTIONS und ccsid=1208 hatte ich auch schon, doch wenn ich dies mache wirft der Compiler einen Fehler
    Code:
    RNF0224: Fehler in %XML-Optionen an Stelle 59, "ccsid=1208".
    Wenn ich die Referenz richtig verstehe scheine ich ja auch nur die Wahl zwischen ccsid=best, ccsid=job oder ccsid=ucs2 zu haben.
    "Mit dem ersten Glied ist die Kette geschmiedet. Wenn die erste Rede zensiert, der erste Gedanke verboten, die erste Freiheit verweigert wird, dann sind wir alle unwiderruflich gefesselt." - Cpt. Jean-Luc Picard

  5. #5
    Registriert seit
    Oct 2016
    Beiträge
    24
    Zitat Zitat von B.Hauser Beitrag anzeigen
    Was passiert, wenn Du anstatt Single Byte Character Set Double Byte verwendest, d.h. HTTPGETDBCLOB und DBCLOB_FILE und bei der XML-Verarbeitung ebenfalls auf Unicode gehst.

    Anstatt ins IFS zu schreiben und dann mit XML-INTO zu verarbeiten, würde ich das Ergebnis direkt mit SQL und XML_TABLE ermitteln.

    Birgitta
    HTTPGETDBCLOB kann ich nicht verwenden jedenfalls wirft mir RDi die Warnung das er dieses Objekt in systools nicht findet.

    Hast du für die Alternative mittels SQL und XML_Table ein Beispielcode? Ich arbeite heute das erstemal damit und habe daher folglich keine Ahnung von XML_Table noch wie genau ich das nutzen kann um damit meinen XML Response verarbeiten zu können.

    Also weder in der RPG/SQL-Referenz noch in IBM POWER Systems i Softwareentwicklung und ‑modernisierung finde ich was zu XML_Table, ab welcher Version ist dies denn enthalten? Ich glaube unsere Maschine läuft mit V7R2, wobei wir ein paar Patches noch nicht installiert haben.
    "Mit dem ersten Glied ist die Kette geschmiedet. Wenn die erste Rede zensiert, der erste Gedanke verboten, die erste Freiheit verweigert wird, dann sind wir alle unwiderruflich gefesselt." - Cpt. Jean-Luc Picard

  6. #6
    Registriert seit
    Feb 2001
    Beiträge
    20.971
    Nach der Ausgabe der Datei musst du per CHGATR-Kommando die CCSID der IFS-Datei auf 1208 setzen. Dann sollte es automatisch klappen.
    Das Problem ist, dass wohl der Parser sich für die "processingoptions" des XML nicht interessiert sondern auf die CCSID der IFS-Datei geht.
    Ansonsten ist der CCSID-Parameter wohl für die Ausgabe und nicht die Eingabe relevant.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  7. #7
    Registriert seit
    Oct 2016
    Beiträge
    24
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Nach der Ausgabe der Datei musst du per CHGATR-Kommando die CCSID der IFS-Datei auf 1208 setzen. Dann sollte es automatisch klappen.
    Das Problem ist, dass wohl der Parser sich für die "processingoptions" des XML nicht interessiert sondern auf die CCSID der IFS-Datei geht.
    Ansonsten ist der CCSID-Parameter wohl für die Ausgabe und nicht die Eingabe relevant.
    Dies klappt bei mir leider nicht, habe nach dem erstellen der XML den Befehl per ExecuteCMD in RPG einmal abgesetzt und dies bewirkt nichts, der username steht noch immer wie vorher dort drin.
    Ich verstehe ehrlich gesagt auch nicht warum das was hätte bringen sollen, die CCSID ist doch schon beim erstellen 1208(sagt jedenfalls wrklnk/rdi).

    Ich habe mir die XML jetzt einmal per Rdi auf meinen Desktop geschoben und mittels notepad++ geöffnet. Dort wird mir der username korrekt angezeigt, mit 'testüser' statt 'testüser'.

    Irgendetwas scheine ich nicht zu verstehen, für mich gibt das ganze gerade keinen Sinn, wenn die Datei CCSID 1208 hat,also UTF-8, warum kann dann dieser dumme Umlaut nicht angezeigt werden...
    "Mit dem ersten Glied ist die Kette geschmiedet. Wenn die erste Rede zensiert, der erste Gedanke verboten, die erste Freiheit verweigert wird, dann sind wir alle unwiderruflich gefesselt." - Cpt. Jean-Luc Picard

  8. #8
    Registriert seit
    Feb 2001
    Beiträge
    20.971
    'testüser' ist die einfach 1:1-Übersetzung des XML-Inhaltes in EBCDIC.
    'ü' ist die UTF-8-Entsprechung des 'ü'.
    D.h., dass der XML-INTO keine Übersetzung von 1208 in EBCDIC (z.B. 273) durchführt.
    Schau dir die XML mal mit WRKLNK im Hex-Mode an, dann solltest du die ASCII-Entsprechung der 2 Zeichen sehen können.
    Wenn die XML-Datei bereits 1208 hat, dann ist das ja auch korrekt.
    Jetzt ist nur die Frage, warum die Übersetzung in 273 nicht klappt.

    Gib mal CCSID=UCS2 an.
    Dann sollte der XML-Into eigentlich von UTF-8 in UCS2 umwandeln und dann in deine SBCS-Felder wieder in die JOB-CCSID z.B. 273.
    Ansonsten definiere die Felder mal als UCS2-Felder.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  9. #9
    Registriert seit
    Oct 2016
    Beiträge
    24
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Schau dir die XML mal mit WRKLNK im Hex-Mode an, dann solltest du die ASCII-Entsprechung der 2 Zeichen sehen können.
    Magst du mir verraten wie ich dies tun kann, 'wrklnk' + F4 zeigt keine Option für HEX und wenn ich mit 5 mir die Datei anzeigen lasse, scheint es auch keine Option zu geben.

    Zitat Zitat von Fuerchau Beitrag anzeigen
    Gib mal CCSID=UCS2 an.
    Dann sollte der XML-Into eigentlich von UTF-8 in UCS2 umwandeln und dann in deine SBCS-Felder wieder in die JOB-CCSID z.B. 273.
    Habe ich gemacht, hat nichts gebracht, der Username ist immernoch inkorrekt.
    Ich kann dir leider gerade nicht folgen, welches Feld soll ich als ucs2 definieren?
    "Mit dem ersten Glied ist die Kette geschmiedet. Wenn die erste Rede zensiert, der erste Gedanke verboten, die erste Freiheit verweigert wird, dann sind wir alle unwiderruflich gefesselt." - Cpt. Jean-Luc Picard

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.971
    Die DS WebserviceRequest. Hier sind die Felder alle als SBCS definiert, also einfacher Zeichensatz.
    Allerdings weiß ich nicht, wie im Full-Free ein UCS2-Feld definiert wird, im alten Format ist das Feld-Typ "C".
    Zur Weiterverarbeitung der Daten ist dann ggf. von dir ein %char (UCS2->SBCS) oder %ucs2 (SBCS->UCS2) einzubauen.

    Hex-Anzeige:
    WKRLINK, Auswahl 5, F10 (Steht am unteren Bildschirmrand).

    Nachtrag:
    Bei meinem letzten XML-INTO gebe ich auch keine CCSID an:
    XMLOption = ' trim=all' // Leerzeichen am Anfang/Ende
    + ' allowmissing=yes' // fehlende Knoten ignorieren
    + ' allowextra=yes' // zusätzliche Knoten ignorieren
    + ' countprefix=cnt' // Zählervariable für Arrays
    + ' case=convert' // ungültige Zeichen in "_" konvertieren
    + ' doc=file' // XML aus Datei lesen
    ;
    und es funktioniert.
    Dann habe ich nur noch die Vermutung, dass dein Job auf CCSID 65535 (*HEX) steht. Dann funktioniert das wohl auch nicht korrekt.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

  11. #11
    Registriert seit
    Oct 2016
    Beiträge
    24
    Ah ok, das kann ich anscheinend einfach mit ucs2(länge) machen, also quasi wie bei char.
    Werde das dann mit WRKLNK morgen einmal testen, muss gleich Feierabend machen.

    Hier sonst enmal der plain xml string, welcher als response zurückkommt: Link


    Ich danke euch allen dann definitv für die heutige Hilfe, hoffentlich finden wir morgen dann eine Lösung : )

    Allen ein schönen Feierabend.
    "Mit dem ersten Glied ist die Kette geschmiedet. Wenn die erste Rede zensiert, der erste Gedanke verboten, die erste Freiheit verweigert wird, dann sind wir alle unwiderruflich gefesselt." - Cpt. Jean-Luc Picard

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.971
    Der Response ist da schon zumindest im hinteren Teil UTF-8. Die %XX-Werte sind nicht UTF-8 sonder nur (einfacher) HTML-Code.
    Wichtig ist, dass die IFS-Datei die CCSID 1208 aufweist, was du über WRKLNK und dann "Anzeige Attribute" prüfen kannst.
    Dienstleistungen? Die gibt es hier: http://www.fuerchau.de
    Das Excel-AddIn: https://www.ftsolutions.de/index.php/downloads
    BI? Da war doch noch was: http://www.ftsolutions.de

Similar Threads

  1. Protokoll für Webservice
    By svit in forum NEWSboard Programmierung
    Antworten: 2
    Letzter Beitrag: 02-03-17, 16:13
  2. HTTPS/SSL Webservice bereit stellen
    By Malte in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 12-02-17, 11:07
  3. REST Webservice aus SRVPGM Error 404
    By Malte in forum NEWSboard Programmierung
    Antworten: 18
    Letzter Beitrag: 11-11-16, 14:18
  4. WebService länge der Parameterübergabe
    By svit in forum NEWSboard Programmierung
    Antworten: 5
    Letzter Beitrag: 11-09-14, 14:23
  5. WebService über HTTPS
    By harbir in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 26-03-14, 14:13

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • You may not post attachments
  • You may not edit your posts
  •