[Python-de] subprocess und encoding...

Diez B. Roggisch deets at web.de
Mon Jun 19 14:12:08 CEST 2006


> Ich frag mich nur, wie ich an "utf8" herankommen kann. Denn es sieht so
> aus:
>
> sys.stdin.encoding:
>      None
> sys.stdout.encoding:
>      None
> sys.stderr.encoding:
>      None
> sys.getdefaultencoding():
>      ascii
> sys.getfilesystemencoding():
>      ANSI_X3.4-1968
> locale.getlocale():
>      (None, None)
> locale.getdefaultlocale():
>      (None, None)
> locale.getpreferredencoding():
>      ANSI_X3.4-1968
>
> Also nirgends brauchbare Daten...

Das liegt daran, das die standard ein/ausgaben NIE ein encoding haben, 
genausowenig wie pipes zu subprozessen. Und das mit gutem Grund: was wenn du 
eine pipe zu einem PNG-generator aufbauen willst? Dann brauchst du 
byte-streams. Das ist der minimale Vertrag, den man mit einem subprozess 
shcliessen kann.

> OK in meinem Fall kann ich utf8 aus dem mysqldump Programm-Parameter
> '--default-character-set=' ableiten. Aber so generell... Welches
> encoding nutzt subprocess???

Siehe oben: keines. Wenn dein konkreter Anwendungszweck es erlaubt, kannst du 
wie beschrieben die files in encoding-aware streams wrappen.

> Naja, dann bleib ich einfach beim dummen Probieren...

Besser ist, den Problemen auf den Grund zu gehen. Wenn du vermurkste Daten in 
der DB hast, finde raus woher. 

MfG Diez