Kleines Problem mit Codecs und Umlauten unter Windows

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Sango

Moin

Ich bin gerade dabei ein kleines Programm zum verarbeiten bestimmter E-Mails zuschreiben. Dabei bin ich auf das recht störende Problem gestossen da Python Standard-Mässig mit dem Verarbeiten von Umlauten probleme hat.

Also hab ich mit dem Modul codecs die E-Mails als latin-1-Text einlesen lassen, was dann beim Schreiben allerdings den interessanten Effekt brachte das das nicht automatisch als solcher auch geschreiben wird.
nun gut, auch das war recht schnell gelöst.

Nun hab ich aber das Problem das die Satz-Enden wohl in einem Format gespeichert werden mit dem manche Windows-Programme scheinbar nicht klar kommen. Statt Zeilenumbruechen stehen da Schwarze Rechtecke. In Vim dagegen sieht der Text astrein aus.

Oh, grade hab ich noch ein Problem gefunden, bei Umlauten in Datenamen Streikt Python wohl Prinzipiel?
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

dein Problem mit Satzenden kenn ich :lol:... Unter windows sind Satzenden eigentlich immer "\r\n", unter Unix/Linux aber nur "\n". Wenn du jetzt zwischen den Platformen Sachen hin und her schiebst (auf binäre Weise) gibts Probleme, weil das nicht standartmäßig das selbe ist. Schlaue Programme gleichen das einfach aus, ich weiß nicht wie es Python macht, aber ich glaube Python speichert entweder nur "\n" oder konvertiert die Zeilenumbrüche beim lesen. Wenn ich jedenfalls mit Python Dateinen schreib und dals Zeilenumbruch unter win "\n" benutze läuft alles wie geschmiert, jedoch nicht wenn ich unter Linux schreibe und das ganze nach Win rüberhole.
sango

Das ist halt was mich gewundert hat. Die Dateien kommen von einer Windows-Datei, sie werden mit Windows-Satz-enden importiiert (obwohl standard eigentlich \n ist). Und normalerweise werden mit 'Print >> file' auch immer System-Spezifische Satzenden ausgegeben, aber bei mir scheinbar nicht.

Vermutlich liegt es am unterschiedlichen Codec der Python durcheinander bringt. Mit 'Print >> file, string, '\r\n'," geht es jedenfalls. Recht seltsam :-?
Antworten