Textdatei im DOS PC-8 Format
low5
- php
Hallo zusammen
Mich plagt das Problem, dass ich mit PHP eine Textdatei erstellen sollte, die von einem älteren System namens AS400 eingelesen wird. Nun verlangt AS400 aber Textdateien, die im DOS PC-8 Format geschrieben sind, da die Umlaute sonst nur eigenartige Sonderzeichen sind. Kann mir jemand einen Tipp geben, wie ich mit PHP eine solche Textdatei erstelle oder umwandeln kann?
Vielen Dank!
low5
Hello,
Mich plagt das Problem, dass ich mit PHP eine Textdatei erstellen sollte, die von einem älteren System namens AS400 eingelesen wird. Nun verlangt AS400 aber Textdateien, die im DOS PC-8 Format geschrieben sind, da die Umlaute sonst nur eigenartige Sonderzeichen sind. Kann mir jemand einen Tipp geben, wie ich mit PHP eine solche Textdatei erstelle oder umwandeln kann?
Ich dachte, dass die AS400 mit EBCDIC arbeitet?
PC-8 wurd nur benutzt von den Tools, wie z.B. PC-Support (Speicherresidentes Requester-Programm für DOS <-> AS400)
Und "PC-8" ist eigentlich nichts anderes, als der gute alte erweiterte IBM-ASCII-Code eben mit 8 gültigen Bit. In jedem (älteren) DV-Buch wirst Du den finden. Die ersten 128 Zeichen sind auf jeden fall identisch mit ASCII.
PHP ist es im Prinzip ja auch egal, was es auzugeben hat. Entscheidend wird eher sein, wie Du die Zeichencodes mit Deinem Editor zuverlässig in den PHP-Code hineinbekommst. Da solltest Du ggf zwischendurch mal in den Hex-Code reinschauen. Es hat hier schon Leute gegeben, die an solchen Problemen verzwifelt sind, weil sie nicht bemerkt haben, dass Ihr Editor immer automatische Umwandlungen von einem in den anderen (unerwünschten) Code durchgeführt hat.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Hallo Tom
Wow, das ging aber schnell!
Ich bitte um Entschuldigung, aber ich versteh hier nur noch Bahnhof...
Die Angaben bezüglich dem DOS PC-8 hab ich vom AS400 Spezialisten. Er meinte, ich müsse die Textdatei so liefern.
Die Daten, die in die Textdatei geschrieben werden, kommen aus einer MySQL Datenbank. Anschliessend hab ich normal mit fopen() eine Textdatei erstellt und die Inhalte reingeschrieben, dann die Datei per FTP auf den Zielserver übermittelt. Dort wird die Datei von AS400 eingelesen und gibt die Sonderzeichen falsch aus.
Wo muss ich nun eingreifen, um das Ganze in den Griff zu bekommen?
Vielen Dank für deine Hilfe!
low5
Hello,
Wo muss ich nun eingreifen, um das Ganze in den Griff zu bekommen?
Am Anfang, würde ich vorschlagen.
Also erstmal schauen, was Dein Texteditor produziert hat. In Hex-Cede bitte, sonst hast Du keine gemeinsame Darstellungsmenge mehr.
Und wenn der das richtig macht (z.B. www.Textpad.de), dann prüfen, ob Die Zeichen auch richtig an die MySQL-Schnittstelle gehen. Welche MySQL-Version ist es denn? Die neueren unterstützen auch unterschiedliche Zeichensätze. Wenn Du die Daten aber als Binärdaten beandelst, dürfte da nichts verkurbelt werden.
Harzliche Grüße aus http://www.annerschbarrich.de
Tom
Ok, danke. Werd es mal in Angriff nehmen.
Gruss | low5
Moin!
Die Daten, die in die Textdatei geschrieben werden, kommen aus einer MySQL Datenbank. Anschliessend hab ich normal mit fopen() eine Textdatei erstellt und die Inhalte reingeschrieben, dann die Datei per FTP auf den Zielserver übermittelt. Dort wird die Datei von AS400 eingelesen und gibt die Sonderzeichen falsch aus.
Wo muss ich nun eingreifen, um das Ganze in den Griff zu bekommen?
Beim Reinschreiben in die Datei. Alle Daten, die in diese Datei geschrieben werden, müssen offenbar konvertiert werden von unter PHP üblichen Zeichencodierung ISO-8859-1 hin zu PC-8. Das bedeutet im Prinzip nur eine Suchen/Ersetzen-Operation der Sonderzeichen, wobei man sich dabei viel Mühe geben kann und alle möglichen Zeichen konvertiert, oder wenig Mühe aufwendet und nur die typischen deutschen Umlaute ÄÖÜäöüß konvertiert - und dann hinterher bei anderen Sonderzeichen diese Funktion nochmal erweitern muß.
- Sven Rautenberg
Wo muss ich nun eingreifen, um das Ganze in den Griff zu bekommen?
ob die as400 nun mit ebcdic (ibm 8-bit) oder ascii arbeitet spielt ja keine rolle.
auf jeden fall hat das system wo die datei herkommt einen anderen zeichensatz als das, wo es hingeht.
es gehen ja sowieso nur bits und bytes rüber. wichtig ist, wie diese interpretiert werden. dafür gibts dann die zeichensätze.
probleme sollte es eigentlich nur bei den umlauten und ß geben, da diese damals in die ersten 127(10) eingebaut wurden. später hat man diese dann in den bereich ~149(10)??? verschoben.
manche der ersten dusseligen pc drucker kannten nur die zeichen bis 127. wenn man dann umlaute drucken wollte, gabs dafür [ ] etc. umgekehrt kannte der zeichensatz mit umlauten keine [ ] usw. daher konnten diese nicht zusammen mit umlauten gedruckt werde, da sie dieselbe position belegten.
ich glaube, daß in deiner datei umlaute jenseits 127(10) eingebaut sind, und die as400 diese diesseits 127(10) haben möchte.
daher solltest du die datei mit dem zeichensatz der herkunftsmaschine lesen, und mit pc-8 zur as400 geben.
wenn du keine möglichkeit hast, für das ziel einen anderen zeichensatz anzugeben, kannst du ja die entsprechenden 4 stellen selbst umsetzen. (von ~145 ??? nach ~80 ???, zeichensatz aus google holen, oder mit ner schleife CHR von 32 bis 127 ausdrucken.