Unicode String Error

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
DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

hallo
ich habe da ein kleines problem
ich habe zweimal den selben namen:
print a, type(a)
--> Günther, Schön (1) <type 'str'>

und
print b, type(b)
--> Günther, Schön (1) <type 'unicode'>

durch einen vergleich ob es die selben sind (ich erwarte ein True) gibt es
aber ein False. ich benutze "utf-8".
mit encode bzw. decode habe ich es schon versucht...
ich erhalte z.b. mit a.encode("utf-8")
--> Günther, Schön (1) <type 'str'>

wie kann ich die beiden typen zu strings machen und gleichzeitig die namen Günther, Schön (1) unverändert lassen???
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@DMD-OL: bei »a.encode("utf-8")« solltest Du einen UnicodeDecodeError bekommen, da Zeichen außerhalb des ASCII-Bereichs enthalten sind. Um einen Byte-String in einen Unicode-String umzuwandeln brauchst Du »decode« und zwar mit dem richtigen Encoding.
Benutzeravatar
xWolf
User
Beiträge: 62
Registriert: Sonntag 2. November 2008, 01:21
Wohnort: China

DMD-OL hat geschrieben:hallo
ich habe da ein kleines problem
ich habe zweimal den selben namen:
print a, type(a)
--> Günther, Schön (1) <type 'str'>

und
print b, type(b)
--> Günther, Schön (1) <type 'unicode'>
......

wie kann ich die beiden typen zu strings machen und gleichzeitig die namen Günther, Schön (1) unverändert lassen???
Hallo,
Hier ein kleines "Sinnlos"-Programm, was aber funktioniert und Dein Problem lösen sollte:

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-

import string

def compare_code(Eingabe, uUnicode):
   if Eingabe == uUnicode:
      print "Same"
   else:
      print "not the same"    
      

uUnicode = u"Günter Schön"

sText =  raw_input('>>Günter Schön<< eingeben:> ') #....gib hier "Günter Schön" ein
print sText, type(sText)
print
print "converting String to Unicode..."
uText = unicode(sText.decode("utf-8"))
print
print uText, type(uText)
print uUnicode, type(uUnicode)
print
print "now compare both...."
compare_code(uText, uUnicode)
Hier meine Bildschirmausgabe:

Code: Alles auswählen

wolf@wolf-X550CC:~/wdata/projekte/python/tests > python unicode01.py 
>>Günter Schön<< eingeben:> Günter Schön
Günter Schön <type 'str'>

converting String to Unicode...

Günter Schön <type 'unicode'>
Günter Schön <type 'unicode'>

now compare both....
Same

DMD-OL
User
Beiträge: 315
Registriert: Samstag 26. Dezember 2015, 16:21

vielen dank, auch an xWolf :)
Antworten