[NEWSboard IBMi Forum]
  1. #1
    Registriert seit
    Jan 2007
    Beiträge
    904

    UTF 8 ohne BOM

    Hallo Forum

    Ich hab mal wieder eine tricky Aufgabe. Ich soll ein UTF 8 File erstellen welches als Datenaustausch für Labeldrucke steht. Definiert hab ich's als CCSID 1208 mit einem 1024 Char Feld (1208).

    Mit dem CPYTOIMPF erhalte ich im IFS eine UTF8 ohne BOM Datei (zusätzlich noch einen FTP auf einen MS Server). Leider rennt das Druckprogramm auf irgendwelche Index Fehler, welche ich nicht verfizieren kann, da das Pgm nicht von mir stammt.

    Irgendwie schnallt er die nachfolgenden Zeilen nicht, obwohl sie mit CRLF getrennt sind.

    Frage: Hat da jemand Erfahrung mit dieser Problematik, bzw. weiss wie ein UTF8 mit BOM erstellt wird.

    Danke für die Hilfe.
    kf

  2. #2
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Ich denke, der Grund wird hier ein anderer sein.
    Was ist BOM?
    https://de.wikipedia.org/wiki/Byte_Order_Mark
    Wie du siehst, ist BOM bei UTF-8 überhaupt nicht sinnvoll, da es keine Byteorder gibt.
    Nötig ist das bei UTF-16/Unicode, da hier durch unterschiedliche Rechnerarchitekturen die Bytefolge (LO/HI bzw. HI/LO) festgelegt werden muss.

    Wenn du eine BOM benötigst, dann musst du eine Datei im IFS mit den 2 Bytes per "Echo >MyBOM" erstellen. Im Echo kann man auch irgendwie Hex/Ocatal-Werte ausgeben.
    Dann gibst du deine Daten in eine 2. Datei "MyData" aus.
    Per "cp MyBOM MyData DestData" verkettest du die Dateien dann für das Versenden.
    Der "cp" kopiert alle aufgeführten Dateien in die letzte angegeben Datei.
    Alternativ geht auch "cat MyBOM MyData >DestData".
    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
    Dec 2007
    Beiträge
    12
    Hallo camouflage,

    ich hatte ein ähnliches Problem und habe das so gelöst:
    - temp. PF mit fester Satzlänge erstellen
    - per Pgm füllen
    die Felder mit einem Trennzeichen trennen und am Ende der Zeile einen CRLF ausgeben
    D $CRLF C CONST(X'0D25')
    D $TRENNER S 1A INZ(';')
    - temp. PF ins IFS kopieren
    CPYTOSTMF FROMMBR('/qsys.lib/qtemp.lib/datei.file/datei.mbr')
    TOSTMF('/zielordner/zieldatei.csv') DBFCCSID(1141) STMFCCSID(1208)

    Vielleicht nicht schön, funktioniert aber.

    Gruß Carsten

  4. #4
    Registriert seit
    Feb 2001
    Beiträge
    20.207
    Das ist jetzt eigentlich nicht viel anderes als das, was der CPYTOIMPF ebenso macht.
    Worin soll da der Vorteil liegen?
    Und wenn dein CRLF nicht am Ende des Satzes steht hast du jede Menge Leerzeichen in der neuen Zeile.
    Machst du dein CRLF aber immer am Ende, sind nach deinem letzten ";" bzw. dem letzten Feld (das nicht mit ";" abgeschlossen werden muss), noch jede Menge Leerzeichen, was beim CPYTOIMPF nicht der Fall ist.
    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
    Jan 2007
    Beiträge
    904
    Danke für die Hilfe, Ansätze und Zeit.

    Ich mach's ja so ähnlich wie tierock empfohlen, da mir der FTP von der fixen Recordlänge die Leerzeichen mitnimmt. Also mach ich zuerst einen "Trailing" CPYTOIMPF (weil nur ein Feld) in's IFS und nachher den FTP auf den MS-Server. Funktioniert.

    Der Fehler lag jedoch nicht im Format, sondern an einem nicht erkannten Feld - so dass das externe Progamm auf den Fehler lief. Alles nicht so wild, Bug erschossen, alle glücklich.
    kf

Similar Threads

  1. Restore ohne IFS möglich?
    By SabineK in forum IBM i Hauptforum
    Antworten: 10
    Letzter Beitrag: 25-04-17, 18:19
  2. RPG bald ohne 80 Spaltenbegrenzung
    By B.Hauser in forum NEWSboard Programmierung
    Antworten: 48
    Letzter Beitrag: 26-09-15, 10:49
  3. PTF-Installation ohne IPL
    By mott in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 05-11-13, 16:08
  4. CPYTOPCD ohne EOF
    By Markus Gruebl in forum IBM i Hauptforum
    Antworten: 4
    Letzter Beitrag: 04-08-01, 20:32
  5. ODBC Treiber ohne CA/400
    By Liebhoff in forum IBM i Hauptforum
    Antworten: 1
    Letzter Beitrag: 12-01-01, 09:50

Berechtigungen

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