[Python-de] subprocess und encoding...
Jens Diemer
python_gmane at jensdiemer.de
Mon Jun 19 15:27:06 CEST 2006
Diez B. Roggisch schrieb:
>> sys.stdin.encoding:
>> None
>> sys.stdout.encoding:
>> None
> 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.
Das stimmt nicht ganz. Zwar spuckt z.B. sys.stdout.encoding unter
Windows nur None aus, unter Linux hab ich da aber UTF-8.
Wäre auch irgendwie merkwürdig, das die Objekte überhaupt ein Attribut
.encoding haben, wenn das keinen Sinn macht...
>> 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.
Also in der DB hab ich auf jeden Fall die richtigen Daten. Ich versuche
generell alles in UTF-8 zu speichern. In PyLucid selber, aber auch in
phpMyAdmin sehe ich die Umlaute korrekt. Von daher gehe ich mal einfach
davon aus, das sie auch korrekt in der DB gespeichert werden ;)
Am liebsten wäre mich eigentlich ich könnte den Dump anders als mit dem
Programm mysqldump erzeugen... Es gibt bei MySQL zwar das Statement:
SHOW CREATE TABLE
Aber ich hab nichts gefunden um die Zeilen-INSERT zu generieren. Wobei
man das auch einfach selber erzeugen lassen kann... Naja, so wie es
jetzt ist klappt es erstmal...
Übrigends ist der eigentliche subprocess-Sourcecode noch ein wenig
komplizierter, weil ich einen Timeout haben möchte. Die Sourcen sind
hier zu finden:
https://opensvn.csie.org/traccgi/PyLucid/browser/branches/0.7/PyLucid/system/tools.py?rev=423#L478
--
Mfg.
Jens Diemer
----
CMS in pure Python CGI: http://www.pylucid.org