Allgemeine Lösung für Umlautprobleme?

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.
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

da müsste man sich mal in englischen Foren umschaun... Obwohl-.- Die haben das Problem ja nich und ich denk, denen wird das evtl auch egal sein ;)
Aber dann würd doch was beim CookBook stehen oder so?! Ich mein, Russen oder Tschechen oder Araber haben das Problem ja auch...

Also ich denk, ganz ehrlich gesagt nich, dass Python schon was dabei hat, sonst hätte das sicher schon jemand gefunden und es wär bekannt.
Gibt es noch andere deutschsprachige Pythonforen. Vielleicht haben die ja User, die schon sowas gebaut haben, oder wissen, wie es geht:roll:

Greetz

P.S. Kein Problem für den Test. Kann ich mehrere Pythonversionen laufen lassen? Dann test ichs noch mit anderen Pythonversionen und wenn meine neuen Ubuntu CDs kommen, gibts auch den Test auf (K)Ubuntu 6.04 :)
Nenn mit noch ein paar IDEs mit denen Ich testen soll, dann test ich dir das auch eben noch
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

CrackPod hat geschrieben:Also ich denk, ganz ehrlich gesagt nich, dass Python schon was dabei hat, sonst hätte das sicher schon jemand gefunden und es wär bekannt.
Gibt es noch andere deutschsprachige Pythonforen. Vielleicht haben die ja User, die schon sowas gebaut haben, oder wissen, wie es geht:roll:
Nein, wir sind das einzige deutschsprachige Webforum, aber es gibt noch die Mailingliste Python-de und die Newsgroup de.comp.lang.python, ebenso den IRC-Channel #python.de auf freenode. Und es gibt Martin von Löwis ;)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Leonidas hat geschrieben:[...]Und es gibt Martin von Löwis ;)
Kenn ich nich, also sowohl Martin als auch Löwis :oops: - scheint aber bekannt zu sein, wenn er so explizit erwähnt wird.
Wenn er so bekannt is, schlies ich daraus, dass er sehr (sehr) gut ist. Wenn er aber so gut ist, dann müsste er sich doch auch mit dem Problem befasst haben, oder irgendwer in der Mailingliste?! Wieso gibt es dann noch keine Lösung?

Greetz
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

CrackPod hat geschrieben:Kenn ich nich, also sowohl Martin als auch Löwis :oops:
MvL ist einer der Mit-Autoren der Unicode-Implemetation in Python 2.0, zusammen mit Marc-André Lemburg (MAL) und weiteren.
CrackPod hat geschrieben:- scheint aber bekannt zu sein, wenn er so explizit erwähnt wird.
Klar, man liest immer wenn es Unicode-Probleme von ihm.
CrackPod hat geschrieben:Wenn er aber so gut ist, dann müsste er sich doch auch mit dem Problem befasst haben,
Hat er doch. Er hat Unicode implementiert.
CrackPod hat geschrieben:Wieso gibt es dann noch keine Lösung?
Wenns nach ihm geht, gibts schon Lösungen für Unicode-Probleme. Frag' ihn einfach mal, dann wirst du verstehen was ich meine ;)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

Meine Meinung zum Thema: Es gibt keinen Weg die Kodierungen verlässlich zu raten. Man sollte es einfach lassen. Das raten meine ich. Und stattdessen als Standard ASCII oder UTF-8 benutzen und in seinen Programmen Optionen anbieten mit denen der Anwender explizit sagen kann was er haben möchte.

Dann hat man weniger Überraschungen. Mal angenommen ich benutze so ein "ratendes" Programm und lasse mir etwas auf der Konsole ausgeben und das Programm rät richtig was ich dort für eine Kodierung benutze. Dann denke ich cool, UTF-8 ist nett und leite die Ausgabe mit der Shell in eine Datei um. In dem Glauben das ich jetzt UTF-8 in der Datei habe. Aber leider rät das Programm für die Umleitung etwas anderes weil `sys.stdout.encoding` dann nämlich `None` ist. Das ist eine ziemlich doofe Überraschung. IMHO.
Benutzeravatar
Rebecca
User
Beiträge: 1662
Registriert: Freitag 3. Februar 2006, 12:28
Wohnort: DN, Heimat: HB
Kontaktdaten:

Wie auch immer:

Code: Alles auswählen

Python 2.2 (#1, Feb 17 2003, 21:43:03) [C] on aix4
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.platform
'aix4'
>>> 
Das Problem hatte ich auch schonmal, rauszufinden wie der entsprechenden Plattform-Strings heissen. Mac OSX ist ja auch Linux-like, da kommt bei sys.platform irgendwas mit "darwin" raus... (der Name des Kernels.)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

BlackJack hat geschrieben:Es gibt keinen Weg die Kodierungen verlässlich zu raten.
[...]
Optionen anbieten mit denen der Anwender explizit sagen kann was er haben möchte.
Hi BlackJack!

Leider ist es so, dass man die Kodierung raten muss. Allerdings kann man das Raten verbessern. Je mehr Informationen ich über die Platform habe, desto eher bekomme ich das korrekte Encoding raus. Ein 90 % richtig geratenes Encoding ist ja auch nicht schlecht, oder? Außerdem könnte ich ja prüfen, ob es eine Konfigurationsdatei gibt, die ein Encoding vorgibt, oder das Umleiten über den Stream-Writer unterbindet.

encoding.ini (alles automatisch):

Code: Alles auswählen

[stdout]
encoding = Auto
encoding.ini (utf-8 vorgegeben):

Code: Alles auswählen

[stdout]
encoding = utf-8
encoding.ini (nicht verwenden):

Code: Alles auswählen

[stdout]
encoding = None
Wenn die INI-Datei nicht im Projektordner existiert, dann wird der Encodinghelper für STDOUT verwendet und es wird versucht, das Encoding automatisch raus zu bekommen. Wenn ich ihn als Programmierer nicht verwenden möchte, dann muss ich ihn ja nicht importieren.

Und? Klingt das für dich besser?

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hi!

Ich habe mal wieder etwas am Encodinghelper geändert.
Wenn erkannt wird, dass IDLE mit im Spiel ist, dann leitet
der Encodinghelper STDOUT nicht um.

Trac: http://gelb.bcom.at/trac/misc/wiki/Encodinghelper
Quellcode: http://gelb.bcom.at/trac/misc/browser/e ... ghelper.py

Damit der Zweck dieses Moduls nicht vergessen wird:
Importiert man das Modul ``encodinghelper.py``, dann wird geprüft, welches Encoding für STDOUT eingestellt ist. Gibt ``sys.stdout.encoding`` diese Information nicht her, wird herausgefunden, welches Betriebssystem verwendet wird und auf Grund dieser Information noch einmal versucht, das Encoding herauszufinden.

Danach wird STDOUT über den StreamWriter des Moduls "codecs" umgeleitet und damit automatisch von **Unicode** in das Zielplattform-Encoding umgewandelt.

Falls dieser Automatismus das korrekte Encoding nicht herausfinden kann, kann man das Encoding in eine INI-Datei schreiben, die vom ``encodinghelper.py`` ausgelesen wird. So kann man auch Sonderfälle abdecken.

Verbesserungsvorschläge sind erwünscht.

lg
Gerold
:-)
Zuletzt geändert von gerold am Mittwoch 1. November 2006, 08:33, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Ich hab mal Links hier eingefügt:
[wiki]Von Umlauten, Unicode und Encodings[/wiki]

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten