Problem mit PyInstaller

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.
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

@__blackjack__: aber Python ist ja so intelligent, das Encoding das in der Konsole aktiv ist, zu übernehmen. Da muß man nichts an stdout herumhacken.

Ich habe jetzt auch gemerkt, es lag an der Schriftart, dass das cmd-Fenster sich so komisch verhalten hat:

Code: Alles auswählen

C:\Users\sirus3> chcp 1252
Aktive Codepage: 1252.

C:\Users\sirus3> python
Python 2.7.13
Type "help", "copyright", "credits" or "license" for more information.
>>> print u"\xfc"
ü
>>> print u"\u20ac"
€
>>> ^Z

C:\Users\sirus3> chcp 850
Aktive Codepage: 850.

C:\Users\sirus3> python
Python 2.7.13
Type "help", "copyright", "credits" or "license" for more information.
>>> print u"\xfc"
ü
>>> print u"\u20ac"
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python\lib\encodings\cp850.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_map)
UnicodeEncodeError: 'charmap' codec can't encode character u'\u20ac' in position 0: character maps to <undefined>
Benutzeravatar
__blackjack__
User
Beiträge: 13111
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Sirius3: Ich weiss das Python die Kodierung erkennt, aber was nützt mir das? CP1252 funktioniert ja auch nur solange bis der der Scraper was aus einer Webseite holt und versucht auszugeben was in CP1252 nicht kodiert werden kann. Für Programme die man einem Endbenutzter zumuten kann, darf das IMHO nicht mit einer Ausnahme aussteigen. Und spätestens wenn der Benutzer die Ausgabe in einer Datei umleitet, fände ich das megablöd wenn ich da von lokalen Einstellungen abhängig bin ob das nun funktioniert, oder bei irgendwelchen Zeichen kracht. Also muss ich mich auch in Python 3 immer explizit um Kodierungen kümmern.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Sirius3
User
Beiträge: 17750
Registriert: Sonntag 21. Oktober 2012, 17:20

Ich wollte nur sagen, dass __deets__s Lösung weder nötig noch eine Lösung ist. Solange alles UTF-kodiert ist, hat man kein Problem, für Altsysteme braucht man irgendeine Lösung. Und da es scheinbar keine einfache Lösung gibt, muß man wohl in den einen oder anderen sauren Apfel beißen. Statt einer Exception hätte ich wohl lieber errors='replace' gesetzt, und das mit einer Warning kombiniert.
Antworten