-
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
-
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".
-
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
-
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.
-
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
-
By SabineK in forum IBM i Hauptforum
Antworten: 10
Letzter Beitrag: 25-04-17, 17:19
-
By B.Hauser in forum NEWSboard Programmierung
Antworten: 48
Letzter Beitrag: 26-09-15, 09:49
-
By mott in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 05-11-13, 15:08
-
By Markus Gruebl in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 04-08-01, 19:32
-
By Liebhoff in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 12-01-01, 08:50
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