-
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
-
Das sieht mir sehr nach UTF-16 aus.
Hier besteht jedes Zeichen eben aus 2 Byte.
-
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.
-
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.
-
Das selbe Problem habe ich auch.
Ich habe alle CCSID's beim CPYFRMSTMF durch probiert allerdings gibt es scheinbar keine die die Leerstellen entfernt.
-
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.
-
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', '')
-
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ß
-
Hallo,
vielleicht kann dir folgende API helfen
QlgTransformUCSData
http://publib.boulder.ibm.com/infoce.../apis/nls2.htm
-
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.
-
Sorry,
mein Fehler, ich meinte auch das API QtqIconvOpen, mit diesem API kann man from CSID to CSID konvertieren.
-
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.
Similar Threads
-
By schatte in forum IBM i Hauptforum
Antworten: 8
Letzter Beitrag: 30-07-07, 10:55
-
By UFi in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 18-12-06, 14:26
-
By Marlin in forum IBM i Hauptforum
Antworten: 5
Letzter Beitrag: 17-11-06, 12:27
-
By Christian.Hesse in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 04-08-06, 10:04
-
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
-
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