Hi
Hab ein kleines Problem.
Zwar werden mir Strings unter Windows in IDLE zwar korrekt angezeigt aber wenn ich das Script mit python script.py starte nicht.
Alle Umlaute werden falsch dargestellt.
Die einzige Lösung ist dann ein u'string'.
Da ich aber auch Inhalte vom Netz mit dem Script lese und dieser Inhalt auch Umlaute hat hab ich wieder das selbe Problem.
Ich habs schon mit unicode() versucht doch da ändert sich nix.
Auch Codings: utf-8 o.ä. funzt nicht.
Kennt jemand das Problem und weiss eine Lösung?
Unicode und Windoof problem.
-
- User
- Beiträge: 36
- Registriert: Sonntag 16. Dezember 2007, 04:18
AMD Athlon 64 X2 6000+, ASUS M2N-SLI Deluxe, ASUS EN8600GTS Silent, 4GB Apacer DDR2 800Mhz | Gentoo Linux x86_64
AMD Sempron 2500+, MSI KT4, ASUS N6200, 2x 512MB Apacher DDR 400Mhz, Hauppauge PVR150 | Arch Linux i686
### Sorry for my bad english ###
AMD Sempron 2500+, MSI KT4, ASUS N6200, 2x 512MB Apacher DDR 400Mhz, Hauppauge PVR150 | Arch Linux i686
### Sorry for my bad english ###
Code: Alles auswählen
# -*- coding: cp1252 -*-
Wird von IDLE auch vorgeschlagen wenn der Coding String falsch oder unvollständig ist.
Dieses "Encoding-Cookie" sagt dem Interpreter nur, welche Codierung die Datei hat, so dass er weiß, wie er Unicode-Literale decodieren muss. Mit der Ausgabe auf der Konsole hat das _gar nichts_ zu tun.
Dafür müssen die Strings korrekt encodiert werden. Windows verwendet cp1252, aber es ist keine elegante Lösung, das Encoding hart zu kodieren. Um das Encoding zu bestimmen, gibt es "sys.getfilesystemencoding()" und "sys.stdout.encoding".
Dafür müssen die Strings korrekt encodiert werden. Windows verwendet cp1252, aber es ist keine elegante Lösung, das Encoding hart zu kodieren. Um das Encoding zu bestimmen, gibt es "sys.getfilesystemencoding()" und "sys.stdout.encoding".
-
- User
- Beiträge: 36
- Registriert: Sonntag 16. Dezember 2007, 04:18
Ich habs jetzt mit
# -*- coding: cp1252 -*-
Versucht, ändert aber nix.
Ausgabe wäre: ³nic÷de => 134 anstelle von ünicöde => 134
EDIT:
variable.decode("iso-8859-1").encode(stdout_encoding)
Damit gings.
DANKE
# -*- coding: cp1252 -*-
Versucht, ändert aber nix.
Ausgabe wäre: ³nic÷de => 134 anstelle von ünicöde => 134
EDIT:
variable.decode("iso-8859-1").encode(stdout_encoding)
Damit gings.
DANKE

AMD Athlon 64 X2 6000+, ASUS M2N-SLI Deluxe, ASUS EN8600GTS Silent, 4GB Apacer DDR2 800Mhz | Gentoo Linux x86_64
AMD Sempron 2500+, MSI KT4, ASUS N6200, 2x 512MB Apacher DDR 400Mhz, Hauppauge PVR150 | Arch Linux i686
### Sorry for my bad english ###
AMD Sempron 2500+, MSI KT4, ASUS N6200, 2x 512MB Apacher DDR 400Mhz, Hauppauge PVR150 | Arch Linux i686
### Sorry for my bad english ###
-
- User
- Beiträge: 36
- Registriert: Sonntag 16. Dezember 2007, 04:18
Wieso?Mad-Marty hat geschrieben:Das ist übrigens der imo einzig richtige weg, auf das stdout encoding zu codieren.
Das ist auch kein windows problem sondern nur mangelndes wissen gewesen.
Unter Linux muss ich weder u'string' nutzen noch encode+decode.
Selbst Kumpel von mir der seit bald 4 Jahren in Python & PyGTK schreibt und u.a. Potato (Frontend für Portage) schreibt wusste ned wieso es unter Windows rumspinnt.
AMD Athlon 64 X2 6000+, ASUS M2N-SLI Deluxe, ASUS EN8600GTS Silent, 4GB Apacer DDR2 800Mhz | Gentoo Linux x86_64
AMD Sempron 2500+, MSI KT4, ASUS N6200, 2x 512MB Apacher DDR 400Mhz, Hauppauge PVR150 | Arch Linux i686
### Sorry for my bad english ###
AMD Sempron 2500+, MSI KT4, ASUS N6200, 2x 512MB Apacher DDR 400Mhz, Hauppauge PVR150 | Arch Linux i686
### Sorry for my bad english ###
Auch unter Linux musst Du auf die Kodierung achten. Wenn das bei Dir noch nie Probleme gab, schön für Dich, aber es ist trotzdem unsauber einfach anzunehmen alle Welt würde Deine bevorzugte Kodierung verwenden.
-
- User
- Beiträge: 36
- Registriert: Sonntag 16. Dezember 2007, 04:18
Ich geh davon aus das alle Welt UTF nutzt.BlackJack hat geschrieben:Auch unter Linux musst Du auf die Kodierung achten. Wenn das bei Dir noch nie Probleme gab, schön für Dich, aber es ist trotzdem unsauber einfach anzunehmen alle Welt würde Deine bevorzugte Kodierung verwenden.
Ist bei Linux, *BSD, OSX, Solaris usw usf auch so

Naja egal hat sich ja erledigt ^^
AMD Athlon 64 X2 6000+, ASUS M2N-SLI Deluxe, ASUS EN8600GTS Silent, 4GB Apacer DDR2 800Mhz | Gentoo Linux x86_64
AMD Sempron 2500+, MSI KT4, ASUS N6200, 2x 512MB Apacher DDR 400Mhz, Hauppauge PVR150 | Arch Linux i686
### Sorry for my bad english ###
AMD Sempron 2500+, MSI KT4, ASUS N6200, 2x 512MB Apacher DDR 400Mhz, Hauppauge PVR150 | Arch Linux i686
### Sorry for my bad english ###