Forum: PC-Programmierung PYTHON-Problem mit Ü (Umlaute)


von Günter Lenz (Gast)


Lesenswert?

#PYTHON-Beispiel
#PYTHON-Version 3.1.2
#Auf Windows XP
for person in ["Herr Müller", "Frau Meier", "Tina Schulze"]:
   print(person, "lernt Python!")

Ich habe hier ein Problem mit dem Buchstaben Ü in Müller.
Wenn ich das Ü entferne funktioniert es, ansonsten kommt
eine Fehlermeldung.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Toll. Es kommt "eine Fehlermeldung". Lautet die etwa "Dies ist eine 
Fehlermeldung"?

Dein Problem wird möglicherweise daran liegen, daß Dein Editor eine 
ungeeignete Zeichencodierung verwendet, und Dein Quelltext nicht so 
aussieht, wie Python das erwartet.

Stichwörter: UTF-8, Codepage 1252, "ANSI" bzw. "Latin-1" oder ISO8859-1. 
Oder, sofern Du in einer Textkonsole ("Eingabeaufforderung") unterwegs 
bist, Codepage 850 bzw. 437.

von npn (Gast)


Lesenswert?

Versuchs mal mit
# -*- encoding: iso-8859-15 -*-
oder
# -*- encoding: utf-8 -*-
in der ersten Zeile. Je nachdem, wie deine Quelltextdatei codiert ist.

von Günter Lenz (Gast)


Lesenswert?

# -*- encoding: iso-8859-15 -*-
for person in ["Herr Müller", "Frau Meier", "Tina Schulze"]:
   print(person, "lernt Python!")

Fehlermeldung:
Traceback (most recent call last):
  File "D:\PYTHON31\x.py", line 3, in <module>
    print(person, "lernt Python!")
  File "D:\Python31\lib\encodings\cp850.py", line 19, in encode
    return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\x81' in 
position 6:
 character maps to <undefined>
------------------------------------------------------------------------ 
--
# -*- encoding: utf-8 -*-
for person in ["Herr Müller", "Frau Meier", "Tina Schulze"]:
   print(person, "lernt Python!")

Fehlermeldung:
  File "D:\PYTHON31\x.py", line 2
SyntaxError: (unicode error) 'utf8' codec can't decode byte 0x81 in 
position 0:
unexpected code byte
------------------------------------------------------------------------ 
--
# -*- coding: cp2352 -*-
for person in ["Herr Müller", "Frau Meier", "Tina Schulze"]:
   print(person, "lernt Python!")

Fehlermeldung:
  File "D:\PYTHON31\x.py", line 1
SyntaxError: encoding problem: with BOM
------------------------------------------------------------------------ 
-
# -*- encoding: cp2352 -*-
for person in ["Herr Müller", "Frau Meier", "Tina Schulze"]:
   print(person, "lernt Python!")

Fehlermeldung:
  File "D:\PYTHON31\x.py", line 1
SyntaxError: encoding problem: with BOM
------------------------------------------------------------------------
for person in ["Herr Mller", "Frau Meier", "Tina Schulze"]:
   print(person, "lernt Python!")

Keine Fehlermeldung

von Sven B. (scummos)


Lesenswert?

Poste doch mal die Datei als Anhang, dann sieht man ja, wie die kodiert 
ist.

Außerdem, Python 3.1? Wirklich?

von Günter Lenz (Gast)


Angehängte Dateien:

Lesenswert?

Wenn ich Python interaktiv starte
erscheint folgendes:

D:\PYTHON31>python
Python 3.1.2 (r312:79149, Mar 21 2010, 00:41:52) [MSC v.1500 32 bit 
(Intel)] on
win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

Ich habe es von der Buch-CD:

Thomas Theis
Einstieg in Python 3
Galileo Computing

von g457 (Gast)


Lesenswert?

Sieht aus wie CP852.

HTH

von Günter Lenz (Gast)


Lesenswert?

# -*- coding: cp852 -*-
for person in ["Herr Müller", "Frau Meier", "Tina Schulze"]:
   print(person, "lernt Python!")

Keine Fehlermeldung
Vielen Dank an alle.
Jetzt funktioniert es.

von Info (Gast)


Lesenswert?

Mit dem passenden Editor (z.B. Notepad++) kannst du das Skript in einem 
von dir gewählten "encoding" abspeichern (mit und ohne BOM).
Das muss natürlich mit dem Hinweis für Python übereinstimmen.
Ich nehme immer utf-8.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.