encode Problem

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
Frank aka Ch3ck3r
User
Beiträge: 49
Registriert: Dienstag 13. November 2007, 21:56
Wohnort: Berlin
Kontaktdaten:

Hi leute.

Ich habe mir ein Programm geschrieben das auf das Backend von Teamspeak Servern zugreift. Dort liest es dann die Playerlist aus und durchsucht sie mit find().

Da es in Teamspeak möglich ist, beim Namen Sonderzeichen anzugeben, habe ich nun das Proble, dass ich folgende Meldung bekomme:
if uplist.find(player.upper()) != -1:
UnicodeDecodeError: 'ascii' codec can't decode byte 0xbf in position 242: ordinal not in range(128)
Ich habe bereits versucht mit encode und decode zu arbeiten. Leider weiß ich jedoch nicht wie die Ausgangsdaten codiert sind (ich bekomme sie über socket.recv())
kostenlose TS2-Server für jeweils 31 Tage:
http://www.ts-onlyfree.de
BlackJack

``if player.upper() in uplist:`` ist IMHO etwas eleganter als `find()`.

Du musst Dir anschauen was für Typen Du da hast. Das sieht so aus, als wenn entweder `player` eine Unicode-Zeichenkette ist und `uplist` Byte-Zeichenketten enthält, oder umgekehrt.

Was kommt den bei ``print repr(player)`` und ``print uplist`` heraus, wenn Du das vor der problematischen Zeile einfügst?
Frank aka Ch3ck3r
User
Beiträge: 49
Registriert: Dienstag 13. November 2007, 21:56
Wohnort: Berlin
Kontaktdaten:

player ist unicode, die uplist nicht.

uplist (ausschnitt)
'P_ID\tC_ID\tPS\tBS\tPR\tBR\tPL\tPING\tLOGIN
TIME\tIDLETIME\tCPRIVS\tPPRIVS\tPFLAGS\tIP\tNICK\tLOG
INNAME\r\n1\t1\t16407\t1302624\t3125\t477216\t277\t61\t10
505\t85\t1\t5\t0\t"0.0.0.0"\t"GEVATTER PIET"\t"GEVATTER PIET"\t\r\n3\t1\t9881\t461193\t4590\t704708\t15\t9
8\t8835\t556\t0\t5\t0\t"0.0.0.0"\t"RAZOR"\t"RAZOR89"\t\r\nOK\r\n'
reicht es, die uplist in unicode umzuwandeln?

//EDIT

Danke, hab es jetzt geschafft mit unicode(uplist,"iso8859-1")
kostenlose TS2-Server für jeweils 31 Tage:
http://www.ts-onlyfree.de
Antworten