[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Oct 2009
    Beiträge
    4

    Red face Leerstelle zwischen den Zeichen, wegen Hexwertfüller 00

    Hallo Zusammen,

    sehr oft lese ich eure sehr guten Beiträge und hoffe, dass Ihr mir heute mal helfen könnt. Über die Suchfunktion im Forum kam ich zu keinem passenden Beitrag, auch das Googlen brachte keine Hilfe.

    Nun zum Problem:

    Wir erhalten eine Datei über die x400. Ein Produkt verarbeitet die Datei und schiebt sie automatisch ins DB2(273) und ins IFS.

    Jetzt sieht die Datei nach der Verarbeitung leider wie folgt aus im DB2:

    *...+....1....+....2....+....3....+.
    ÿÞC r e a t e d , H e a d e r A G ,

    E r s t e l l t a m : 3 0 . 0 9

    Mit Hexwerten:

    * . . . + . . . . 1 . . . . + . . . . 2 . . . . + . . . . 3 . . . . + . *...+....1....+....2....+....3....+.
    DF8EC300 99008500 8100A300 85008400 6B00C800 85008100 84008500 9900C100 C7006B00 *ÿÞC r e a t e d , H e a d e r A G , *
    00404040 40404040 40404040 40404040 40404040 40404040 40404040 40404040 40404040 * *
    00C50099 00A200A3 00850093 009300A3 00400081 0094007A 004000F3 00F0004B 00F000F9 * E r s t e l l t a m : 3 0 . 0 9*

    Wie man ganz klar erkennen kann werden hier immer wieder die Hexwerte 00 ausgegeben, welche dann zu der Leerstelle führen.

    Die Datei die wir parallel als e-mail bekommen, sieht im notepad ++ ganz normal aus.

    Weiß jemand welche Ausgangs-CCSID das sein könnte, oder wie ich sie konvertieren muss, um die fehlerhaften Leerstellen zu entfernen?

    Vielen Dank für eure Unterstützung

    lg dancho

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Das sieht mir sehr nach UTF-16 aus.
    Hier besteht jedes Zeichen eben aus 2 Byte.
    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
    Oct 2009
    Beiträge
    4
    Hallo Fuerchau,

    danke für die schnelle Antwort.

    UTF-16 wäre ja dann CCSID 1200 - 1205. Wie könnte ich die am besten Konvertieren?

    Ich habe im IFS schon versucht die Datei durch hin und her Kopieren zu ändern, aber leider ohne erfolg.

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Das Problem ist ggf. die Kennung x'DF8E' die z.B. für Notepad den Hinweis auf UNICODE gibt und Notepad den Text korrekt interpretiert.
    Anschließend folgen eben die UNICODE-Zeichen paarweise mit 'C300' ....
    Allerdings ist hier der Zeichenwert wohl in EBCDIC und nicht in UTF-16 bzw. UCS2, denn x'C3' ist das EBCDIC 'C'.

    Die Frage ist hier, wie sieht denn das Original aus und nicht nach der Verarbeitung.
    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

  5. #5
    Registriert seit
    Sep 2007
    Beiträge
    24

    Question

    Das selbe Problem habe ich auch.
    Ich habe alle CCSID's beim CPYFRMSTMF durch probiert allerdings gibt es scheinbar keine die die Leerstellen entfernt.

  6. #6
    Registriert seit
    Oct 2009
    Beiträge
    4
    also die original Datei hat als Kennung x'FFEF' und enthält danach für 'C' x'43' x'00' demnach ist in der Originaldatei schon das Leerzeichen mit drin.

    Ich habe mal ein Bild angehangen, um dies zu verdeutlichen.

  7. #7
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Die Originaldatei hat tatsächlich UTF-16 (CCSID 1200).
    Die 2-Byte-Hexkennung am Anfang kennzeichnet dies.
    Dein Konverter kann das allerdings nicht erkennen und konvertiert eben direkt 1 zu 1, was bei Sonderzeichen (z.B. deutsche Umlaute) ein Problem ist.

    Du musst diese selber konvertieren und erst dann an den Konverter abgeben.
    Allerdings musst du die 2 Bytes am Anfang wegbekommen, da sonst der CPYFRMSTMF das nicht konvertieren kann.

    Die Alternative ist anschließend einen SQL abzusetzen:

    update myfile set field=replace(field, x'00', '')

    Zum löschen der 2 Sonderzeichen am Anfang dann:

    update myfile set field=replace(field, x'DF8E', '')
    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

  8. #8
    Registriert seit
    Oct 2009
    Beiträge
    4

    Thumbs up

    Hallo Fuerchau,

    super.

    Vielen Dank, als adhoc Lösung bin ich damit erstmal sehr zu frieden, obwohl es das Ursprungproblem nicht löst, es dennoch elegant umgangen wird.

    Netten Gruß

  9. #9
    Registriert seit
    Apr 2005
    Beiträge
    385
    Hallo,

    vielleicht kann dir folgende API helfen


    QlgTransformUCSData

    http://publib.boulder.ibm.com/infoce.../apis/nls2.htm

  10. #10
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Dazu musst du nunmal die IFS-Datei mit IFS-API's erst mal selber lesen.
    Ausserdem ist das API nur für UCS2<->UTF gedacht.

    Einfacher ist da sicherlich obiges Verfahren, insbesonders da die 2 Bytes am Anfang der Datei ja nicht benötigt werden.
    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
    Apr 2005
    Beiträge
    385
    Sorry,

    mein Fehler, ich meinte auch das API QtqIconvOpen, mit diesem API kann man from CSID to CSID konvertieren.

  12. #12
    Registriert seit
    Feb 2001
    Beiträge
    20.696
    Da ist dieses API einfacher zu programmieren:
    Convert a Graphic Character String (CDRCVRT, QTQCVRT) API

    Aber selber die IFS-Datei lesen muss man immer noch.
    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. Unterschied zwischen V5R3M0 und V5R3M5
    By schatte in forum IBM i Hauptforum
    Antworten: 8
    Letzter Beitrag: 30-07-07, 10:55
  2. Dateiübertragung zwischen iSeries und PC/Server
    By UFi in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 18-12-06, 14:26
  3. MSG zwischen zwei iSeries
    By Marlin in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 17-11-06, 12:27
  4. Java, JDBC, iSeries und Tschechische/Russische/Chinesische Zeichen
    By Christian.Hesse in forum NEWSboard Programmierung
    Antworten: 3
    Letzter Beitrag: 04-08-06, 10:04
  5. WINS bei AS400 abschalten bzw. unterbinden
    By cc in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 13-10-04, 22:49

Berechtigungen

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