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

    Umlaute Spoolfile

    Hi Forum,

    ich will Spoolfiles von der AS400 verarbeiten.

    Ich lese sie mit :
    Code:
            PrintParameterList pparam=new PrintParameterList();
            pparam.setParameter(PrintObject.ATTR_WORKSTATION_CUST_OBJECT,"/QSYS.LIB/QWPDEFAULT.WSCST");
            pparam.setParameter(PrintObject.ATTR_MFGTYPE,"*WSCST");
            CharConverter conv=new CharConverter(as400.getCcsid());
            PrintObjectTransformedInputStream inStream=spool.getTransformedInputStream(pparam);
            int buf=inStream.read();
    Das funktioniert auch sehr gut, doch bei Umlauten gibt es Probleme. Für ein ä bekomme ich -124 . An was kann das liegen ?

  2. #2
    Registriert seit
    Oct 2004
    Beiträge
    240
    Bei deinem Code fehlt der "spannende" Teil - wie die Zeichen umgewandelt werden.

    Wozu ist der CharConverter gut?

    Dein Problem wir zu 99% sein, dass die EBCDIC/ASCII-Wandlung bereits erfolgt ist!

    Das Umsetzungungsobjekt liefert aber kein Unicode oder ANSI sondern ASCII.

    Du kannst die Bytes sammeln um mit new String(bytes, "Cp850") konvertieren.

    Spooldateien mit Mehrfach bzw. Fettdruck kommen bei dieser Lösung aber nicht gut weg...

    /Robert

  3. #3
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Wobei CP850 eher die schlechte Wahl ist.
    Ggf. ist CP1252 (Windows ANSI) besser geeignet.

    Problematisch wird es ggf. mit anderen CHRID's der Spoolfile, insbesonders für osteuropäisch o.a..
    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

  4. #4
    Registriert seit
    Oct 2004
    Beiträge
    240
    Zitat Zitat von Fuerchau Beitrag anzeigen
    Wobei CP850 eher die schlechte Wahl ist.
    Ggf. ist CP1252 (Windows ANSI) besser geeignet.
    Sein Code funktioniert aber nur mit Cp850. Die QWPDEFAULT.WSCST liefert
    eben diese ASCII-Codepage zurück. Mein Posting versteht sich als Hinwis, was er angeben muss, damit Java weiß, wie die Bytes codiert sind.

    Möglicherweise liefert QWPDEFAULT auch andere ASCII-Seiten zürck, wenn man z.B. osteuropäische Spools druckt.

    Alternativ kann man die Druckstream "Raw" auslesen und selber vom EBCDIC-Stream konvertieren - da sollte nichts daneben gehen.


    /Robert

  5. #5
    Registriert seit
    Feb 2001
    Beiträge
    20.241
    Wie du schon sagst, die Daten liegen in EBCDIC vor, also so, wie sie die Anwendung ausgegeben hat.
    Erst beim Senden an den Drucker wird über die im WSCST enthaltene EBCASC-Tabelle in die CP850 ausgegeben.
    Wenn du die Daten nativ liest und in z.B. Windows benötigst, musst du sie von EBCDIC nach Windows codewandeln und nicht nach 850 (DOS!).
    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

  6. #6
    Registriert seit
    Oct 2004
    Beiträge
    240
    Nocheinmal:

    Die von vjordan gepostete Lösung liefert nur Cp850. Java arbeitet intern mit Unicode. Ist der String einmal richtig drinnen, habe ich im Normalfall keine Sorgen mehr - egal ob Windows, Linux oder System i, Bildschirm, File oder Datenbank.

    Der kritische Punkt die Wandlung von Bytedaten in String. Da Java hier nicht default "Cp850" annimmt, muss ich das beim Konvertieren angeben. Ab dann läuft alles Java-intern mit Unicode weiter. Die JRE weiss um die Defautlformate für Bildschirm und Dateien.

    Wenn ich den Spool (unter Windows) in ein Outfile ausgebe, erhalte ich eine Datei nach ANSI (1252) ohne je dahin zu konvertieren.

    Als Quelle wäre zwar sicher EBCDIC zu bevorzugen, aber zu 1252 muss ich in Java selten konvertieren (nur z.B. wenn ich auf der System i, ANSI-Files erzeugen will).

    /Robert

Similar Threads

  1. Umlaute umsetzen
    By MKl. in forum IBM i Hauptforum
    Antworten: 6
    Letzter Beitrag: 14-12-06, 15:43
  2. Spoolfile übersetzen
    By y-tom in forum IBM i Hauptforum
    Antworten: 2
    Letzter Beitrag: 01-09-06, 12:45
  3. Umlaute werden im IFS zu Sonderzeichen
    By y-tom in forum IBM i Hauptforum
    Antworten: 3
    Letzter Beitrag: 29-05-06, 14:31
  4. Umwandlung Spoolfile in PDF
    By jgv in forum IBM i Hauptforum
    Antworten: 5
    Letzter Beitrag: 26-05-06, 16:35
  5. Spoolfile bleibt auf *SND
    By Souljumper in forum NEWSboard Programmierung
    Antworten: 0
    Letzter Beitrag: 15-09-05, 09:01

Berechtigungen

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