Hi *, ich hänge hier an einem etwas lästigen Problem in einem Druckfilter, der intern mit unicode arbeitet, und an den IO Grenzen passend de/encodiert.. Als Option gibt's die Möglichkeit, das Ganze durch a2ps zu schleusen, wobei die Ausgabe dann in einer temp. Datei utf8 kodiert geparkt wird. Weil die Druckdaten auch noch Liniengrafik enthalten, muß ich bei der Ausgabe von utf8 nach cp850 wandeln, damit a2ps etwas damit anfangen kann. Aus Effizienzgründen verarbeite ich ganze Blöcke (BLOCKSIZE = 8192): pcmd = \ 'a2ps -q -%sB -l%s --borders=no --encoding=ibm-cp437 -o-' % ( self.a2ps, cpl) pfp = os.popen(pcmd, 'w') if pfp: while True: data = self.a2psfile.read(BUFSIZE) if not data: break data = data.decode('utf8').encode('cp850') pfp.write(data) else: err("failed to open a2ps pipe") Das funkt ja auch ganz gut, außer wenn jetzt dummerweise genau auf der Blockgrenze ein multibyte Zeichen liegt, geht das Ganze in die Hose: internal error: Traceback (most recent call last): File "/usr/bin/lpf", line 1421, in ? ret = lpf.run() File "/usr/bin/lpf", line 1309, in run self.lpr.close() File "/usr/bin/lpf", line 1007, in close data = data.decode('utf8').encode('cp850') File "/usr/lib/python2.4/encodings/utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf8' codec can't decode byte 0xe2 in position 8191: unexpected end of data So, wie die Sache steht, bleibt mir wohl nix anderes übrig, als auf zeilenweise Verarbeitung auszuweichen, oder hat jemand eine bessere Idee? Pete _______________________________________________ python-de maillist - python-de@python.net http://python.net/mailman/listinfo/python-de