Unicode und Strings ich verzweifele

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
Trollforce
User
Beiträge: 1
Registriert: Donnerstag 31. Juli 2008, 00:22

Donnerstag 31. Juli 2008, 00:39

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 :)
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Donnerstag 31. Juli 2008, 01:13

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.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten