[Python-de] subprocess und encoding...

Jens Diemer python_gmane at jensdiemer.de
Mon Jun 19 09:29:06 CEST 2006


Ich möchte per subprocess das Programm mysqldump benutzten. Das klappt 
Grundsätzlich schon, allerdings hab ich Probleme mit dem Encoding. Ich 
möchte die Ausgaben gern nach unicode wandeln.

Ich hab gesehen das subprocess.PIPE (also process.stdout) ein encoding 
Attribut besitzt. Leider ist das aber == None ;(

Ansonsten Probiere ich einfach ["ASCII", "latin1", "utf8"] durch. ASCII 
klappt natürlich immer dann, wenn keine Umlaute vorkommen. Aber sind 
welche enthalten klappt es auch mit latin1 und utf8 nicht.

mysqldump hat den Parameter default-character-set:
"""
Use charset_name as the default character set. See Section 5.10.1, "The 
Character Set Used for Data and Sorting". If not specified, mysqldump 
from MySQL 4.1.2 or later uses utf8, and earlier versions use latin1.
"""
http://dev.mysql.com/doc/refman/4.1/en/mysqldump.html

Egal ob ich default-character-set auf utf8 oder latin1 stelle, das 
wandeln in unicode klappt in Python nicht...

Am Ende bleibt mir nicht's anderes übrig als aus Ausgaben mit 
errors="replace" in unicode zu wandeln, aber das Ergebniss hat dann 
natürlich statt Umlaute nur noch Fragezeichen :(

Nun also zwei Fragen:
-Was kann ich tun damit ein definierter Codec benutzt wird?
-Kann ich die Ausgaben irgendwie als RAW-Daten in unicode bringen? Also 
eine Alternative zu errors="replace" ?


-- 
Mfg.

Jens Diemer


----
CMS in pure Python CGI: http://www.pylucid.org