[Python-de] utf8 Problem mit Blockgrenzen

Diez B. Roggisch deets at web.de
Sam Aug 20 12:30:32 CEST 2005


> So, wie die Sache steht, bleibt mir wohl nix anderes übrig, als auf 
> zeilenweise Verarbeitung auszuweichen, oder hat jemand eine bessere 
> Idee?

Ärgerliches Problem, ähnliches hatte ich auch schon mit DB-Spalten. 
Damals mit JAVA, dessen utf-encoder sowas dankenderweise überliest - die 
Daten waren dann zwar abgeschnitten, aber bei limitierten Spaltenbreiten 
passiert das eh.

Kannst du nicht die Blöcke verketten? Dann könntest du im Fall eines 
Fehlers erstmal den nächsten anhängen. Es sollte doch schon _sehr_ mit 
dem teufel zugehen, wenn du da nicht früher oder später einen grösseren 
Block bekommst, der sich umkodieren lässt.

Etwa so:

blocks = []
while True:
     data = self.a2psfile.read(BUFSIZE)
     if not data:
         break
     blocks.append(data)
     try:
         out = "".join(blocks).decode('utf8').encode('cp850')
         pfp.write(data)
         blocks = []
     except UnicodeDecodeError:
         pass



MfG Diez