echo $begrüßung;
wie man im Folgenden sieht, kann ich mit print problemlos Strings mit Sonderzeichen ausgeben, aber wenn derselbe String innerhalb einer Liste steht, wandelt print ihn um:
a = 'ähnlich'
print a
ähnlich
b = ['ähnlich']
print b
['\xc3\xa4hnlich']
Das selbe passiert, wenn du print repr(a) eingibst. Wenn du eine komplexe Struktur ausgeben willst, wird sie offensichtlich in der von repr() gelieferten Darstellung ausgegeben.
print b[0]
ähnlich
Na bitte, den String einzeln ausgegeben ist doch alles bestens.
Welchen Wert hat es denn eigentlich, einen String als Unicode zu bezeichnen, wenn es keine Angabe zu der verwendeten Codierung gibt (z.B. UTF-8, UTF-2 etc.)?
Die Kodierung muss erst bei der Ausgabe berücksichtigt werden. Die interne Darstellung kann doch sein wie sie will.
Den Default-Wert der Ausgabekodierung kannst du mit
import sys
print sys.getdefaultencoding()
abfragen. Setzen geht beispielsweise in einer Datei namens sitecustomize.py. Liegen kann sie wohl an mehreren Stellen. Bei mir liegt sie unter /usr/lib/python2.5/site-packages/. Ihr Inhalt ist
import sys
sys.setdefaultencoding("utf-8")
Diese Datei wird beim Start von Python aufgerufen. Nach erfolgtem Start wird sys.setdefaultencoding entfernt und die Default-Kodierung lässt sich nicht mehr einstellen. Dann bleibt nur noch die individuelle Kodierung.
Auf jeden Fall möchte ich nun gerne, dass Strings innerhalb von anderen Datentypen bei der Ausgabe ebenso behandelt wie einzelne Strings.
Dann überschreib dir __str__. Die Ausgabe von Strukturen oder Objekten hat doch nur Kontrollausgabencharakter. Sie ist sicher nicht für Anwenderaugen bestimmt.
echo "$verabschiedung $name";