Wie kann ich einen String in Unicode umwandel?
Mit dem u vor dem String kenne ich: z.B. u"Hallo \xd6sterreich"
Aber wie kann ich das mit einer Variablen XYZ die einen String enthält umsetzen? Sowas wie u(XYZ) geht ja leider nicht.
Unicode und Variablen
-
- User
- Beiträge: 13
- Registriert: Montag 26. Februar 2007, 00:01
Das hab ich schon mal versucht bekomme da aber folgenden Fehler:
AttributeError: decode
Da war das Problem, dass die Variable die ich bekommen habe als float deklariert (was sich auch nicht umgehen lässt!) deswegen versuche ich die Variable als String zu deklarieren:
print "text2: ", unicode(str(text), "utf-8")
Bekomme dann aber die Fehlermeldung:
UnicodeError: ASCII encoding error: ordinal not in range(128)
AttributeError: decode
Da war das Problem, dass die Variable die ich bekommen habe als float deklariert (was sich auch nicht umgehen lässt!) deswegen versuche ich die Variable als String zu deklarieren:
print "text2: ", unicode(str(text), "utf-8")
Bekomme dann aber die Fehlermeldung:
UnicodeError: ASCII encoding error: ordinal not in range(128)
Du solltest Dich ganz dringend mit Unicode und Kodierungen auseinander setzen und dann erst einmal herausfinden, wobei die Ausnahme ausgelöst wird.
Zum Beispiel versuchst Du dort ein Unicode-Objekt mit ``print`` auszugeben. Dazu muss das aber wieder in Bytes umkodiert werden. Falls dem Interpetierer bekannt ist, welche Kodierung das Terminal verwendet, oder wo auch immer die Daten ausgegeben werden, dann kann das gut gehen, aber sonst wird versucht ASCII als Kodierung zu verwenden. Das klappt dann natürlich nicht, wenn die Unicode-Zeichenkette etwas ausserhalb von ASCII enthält.
Zum Beispiel versuchst Du dort ein Unicode-Objekt mit ``print`` auszugeben. Dazu muss das aber wieder in Bytes umkodiert werden. Falls dem Interpetierer bekannt ist, welche Kodierung das Terminal verwendet, oder wo auch immer die Daten ausgegeben werden, dann kann das gut gehen, aber sonst wird versucht ASCII als Kodierung zu verwenden. Das klappt dann natürlich nicht, wenn die Unicode-Zeichenkette etwas ausserhalb von ASCII enthält.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo sauerkraut!sauerkraut hat geschrieben:Wie kann ich einen String in Unicode umwandel?
Das habe ich bereits versucht, einsteigerfreundlich zu erklären: http://www.python-forum.de/topic-5095.html
Lies dir das noch mal durch und spiele mit den Beispielen.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Und wie immer weise ich auf die fehlerkorrigierte Version im Wiki hin: [wiki]Von Umlauten, Unicode und Encodings[/wiki]
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Ich denke man sollte etwas prominenter darauf hinweisen dass Unicode nicht UTF-8 ist und dasss man Unicode-Daten nicht direkt anzeigen kann. Das ist ein Punkt, der zum Beispiel in den Wikipedia-Seiten meiner Meinung nach nicht direkt klar ist, der aber hilfreich ist, Unicode zu verstehen.birkenfeld hat geschrieben:Und wie immer weise ich auf die fehlerkorrigierte Version im Wiki hin: [wiki]Von Umlauten, Unicode und Encodings[/wiki]
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
- birkenfeld
- Python-Forum Veteran
- Beiträge: 1603
- Registriert: Montag 20. März 2006, 15:29
- Wohnort: Die aufstrebende Universitätsstadt bei München
Wenn du die Wiki-Version verbessern magst...
-
- User
- Beiträge: 424
- Registriert: Montag 28. Juli 2003, 16:19
- Wohnort: /dev/reality
Mal dumm gefragt: Was für Variablen meinst du?
Wenn du die selber anlegst, solltest du (meiner Meinung nach) Umlaute vermeiden, bzw durch Diphthonge ersetzen, oder aber, soweit möglich, durch beschreibende englische Bezeichnungen ersetzen. Wird spätestens dann notwendig, wenn sich jemand aus dem Nichtdeutschen Sprachraum mit dem Quellcode auseinandersetzen will und/oder muss.
syl, querdenker
Wenn du die selber anlegst, solltest du (meiner Meinung nach) Umlaute vermeiden, bzw durch Diphthonge ersetzen, oder aber, soweit möglich, durch beschreibende englische Bezeichnungen ersetzen. Wird spätestens dann notwendig, wenn sich jemand aus dem Nichtdeutschen Sprachraum mit dem Quellcode auseinandersetzen will und/oder muss.
syl, querdenker