Seite 1 von 1

Unicode und Strings ich verzweifele

Verfasst: Donnerstag 31. Juli 2008, 00:39
von Trollforce
Hallo zusammen!

Ich bin noch ziemlich unerfahren was Python angeht, ich habe mal ein paar Monate vor einem Jahr Python im Informatikunterricht gelernt und kenne jetzt die Grundlagen. Ich kann sehr gut PHP, und da fängt da jammer auch schon an.

Denn in PHP hatte ich nie Probleme mit den Zeichensätzen weil ich mich ja da nicht drum kümmern muss ;)

Ich versuc mich zurzeit an einem Tool was Daten aus dem Online Rennspiel "Trackmania United" (Platzierungen, Bestzeiten, Chat usw.) ausliesst und auf der Logitech G15 Tastatur auf dem Display ausgibt.

Daten auslesen ist dank einem Module kein Problem.
Daten auf das LCD zaubern ist dank ein Module ebenfalls kein Problem.

Aber bei der zusammenführung von Trackmania-Daten und Display anzeige happerts!

Das Module zur Anzeige von Daten auf dem Display: http://www.gamexp.nl/ext/g15m/

Funktioniert wunderbar! Solange ich nicht mit Sonderzeichen und Umlauten daherkomm.

In Trackmania werden seeeeehr viel Sonderzeichen zur auschmückung des Eigenen Nicknames verwendet. Bei mir zum Beispiel dieses Spezial-"X": ×

Und das frisst dann das Module nicht und gibt mir folgende Fehlermeldung aus:
Traceback (most recent call last):
File "F:\Python24\projekt.py", line 48, in ?
main()
File "F:\Python24\projekt.py", line 29, in main
lcd.SetText(txtSmall1, text)
File "F:\Python24\Lib\site-packages\lglcd\G15Python.py", line 316, in SetText
def SetText(*args): return _G15Python.CEzLcd_SetText(*args)
TypeError: in method 'CEzLcd_SetText', argument 3 of type 'LPCTSTR'
Bei Zahlen kommt gar nichts ehe ich sie vorher durch ein str() jage, danach kein Problem. Wenn ich Versuche einen Nickname mit Sonderzeichen wie das × durch ein str() zu verwursten:
Traceback (most recent call last):
File "F:\Python24\projekt.py", line 47, in ?
main()
File "F:\Python24\projekt.py", line 25, in main
text = str(chatlines[10])
UnicodeEncodeError: 'ascii' codec can't encode character u'\xd7' in position 9: ordinal not in range(128)
Mh! Klar da stimmt irgendwas nicht mit den Zeichensätzen denk ich mal?
Ich hab schon diverse Funktionen wie z.B. unicode() ausprobiert. Ohne Erfolg.

Die Tastatur kann auch die meisten Zeichen wie z.B. das × ohne Probleme ausgeben.

Wäre seeehr nett wenn jemand nem' "Zeichensatz Noob" das ein bisschen näher bringen könnte und mir einen Lösungsvorschlag hierfür machen könnte.

Vielen Dank :)

Verfasst: Donnerstag 31. Juli 2008, 01:13
von Leonidas
Hallo Trollforce, willkommen im Forum,

Lies dir mal [wiki]Von Umlauten, Unicode und Encodings[/wiki] durch, dort ist beschrieben wie das so funktioniert. Dass man sich bei PHP um Zeichensätze nicht kümmern muss ist aber falsch, dort ignoriert man das Problem einfach nur.