# -*- coding: iso-8859-1 -*-

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
89PM
User
Beiträge: 1
Registriert: Donnerstag 18. Juli 2013, 17:02

Hi, ich habe gerade erst begonnen mir das Programmieren beizubringen und bin daher noch ein blutiger Anfänger.
Ich habe folgendes Problem:
Ich habe als Beispiel folgendes kleines Programm geschrieben:

langer_String = '''Alle meine Entchen
schwimmen auf dem See.
Köpfchen in das Wasser.
Schwänzchen in die Höh.'''

wenn ich das Programm nun starte erkennt es alle Umlaute logischerweise nicht, daher habe ich den code # -*- coding: iso-8859-1 -*-
ganz an den Anfang eingefügt.


# -*- coding: iso-8859-1 -*-
langer_String = '''Alle meine Entchen
schwimmen auf dem See.
Köpfchen in das Wasser.
Schwänzchen in die Höh.'''

Aber als ich es startete fuktioniertren die äs,ös und üs immer noch nicht ('''...xf6pfchen in das Wasser, \nSchw\xe4nzchen in die H\xf6h.''').
Könnt ihr mir sagen wo das Problem liegt?
Das wäre sehr nett.
Zuletzt geändert von 89PM am Donnerstag 18. Juli 2013, 19:39, insgesamt 2-mal geändert.
BlackJack

@89PM: Was heisst „funktionieren nicht”? Du machst mit `langer_String` ja nichts weiter. Heisst das es gibt eine Fehlermeldung vom Compiler? Das kann eigentlich nicht mehr sein.

Falls Du doch etwas mit der Zeichenkette machst, dann ist die Frage welche Python-Version, passt die Kodierungsangabe zur tatsächlichen Kodierung der Textdatei, und was machst Du denn mit der Zeichenkette?
Benutzeravatar
kbr
User
Beiträge: 1487
Registriert: Mittwoch 15. Oktober 2008, 09:27

89PM hat geschrieben:Aber als ich es startete fuktioniertren die äs,ös und üs immer noch nicht.
Du musst darauf achten, die Datei mit der gleichen Kodierung zu speichern, wie Du Python mittels der coding-Zeile mitteilst. Ein guter Editor erlaubt Dir das. Und dann solltest Du am besten 'utf-8' wählen.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

kbr hat geschrieben:Du musst darauf achten, die Datei mit der gleichen Kodierung zu speichern, wie Du Python mittels der coding-Zeile mitteilst. Ein guter Editor erlaubt Dir das. Und dann solltest Du am besten 'utf-8' wählen.
Man muss darüber hinaus noch aufpassen, inwiefern das anzeigende Element (Shell, Testdatei, usw) diese Codierung auch darstellen / interpretieren kann ;-) Das könnte durchaus das Problem beim OP sein! Ich denke nicht, dass die Windows cmd utf-8 versteht, oder?

@89PM: Schau Dir mal die Links in meiner Signatur an - wenn Du Dir die durchgelesen hast, wirst Du anfangen zu verstehen, was es mit Encodings so auf sich hat.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Hyperion hat geschrieben:Ich denke nicht, dass die Windows cmd utf-8 versteht, oder?
Laut SO schon, aber das ist schon ein gewisser Mehraufwand, ja.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Hellstorm
User
Beiträge: 231
Registriert: Samstag 22. Juni 2013, 15:01

Hyperion hat geschrieben:Ich denke nicht, dass die Windows cmd utf-8 versteht, oder?
Also zumindest Umlaute gehen ohne Probleme:

Code: Alles auswählen

print("Hällo")
dann cmd gestartet:

Code: Alles auswählen

E:\>python test.py
Hällo!
Fertig. Keine Probleme. :K Nur bei Sachen, die sich wohl nicht in diese Windows-Kodierung umwanden lassen (kA wie die heißt), geht es nicht:

Code: Alles auswählen

print("日本語")

Code: Alles auswählen

E:\>python test.py
Traceback (most recent call last):
  File "test.py", line 1, in <module>
    \ufeffprint("\u65e5\u672c\u8a9e")
  File "C:\Programmieren\Python33\lib\encodings\cp850.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode characters in position 0-2: character maps to <undefined>
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Das hat ja alles nichts mit UTF-8 zu tun, das zeigt nur dass Python offenbar korrekt in CP-1215 konvertiert, welches offenbar von deiner Shell erwartet wird.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
BlackJack

{"Konrinthenkackermodus": "cp850"}

(Ich wollte das mal mit JSON auszeichnen, statt (Pseudo-)XML :-))
Antworten