Hintergründe:
Ich habe schon etwas Erfahrung mit Python (kaum mit conky) und bin gerade dabei mir mein Desktop als persönliche Infozentrale einzurichten. Dies soll von systemdaten (cpu, mem, network, syslog ... ) über Wetter, Kalender, Todolisten, bis hin zum Speiseplan der Unimensa, Rss feeds und viel mehr.
Mit Websites parsen hab ich kaum Erfahrung, bin mit der Dokumentation von BeautifulSoup aber ganz einfach voran gekommen. Da ich keine Ahnung von LUA oder Conky habe, formatiere ich die strings komplett im python-script, sodass die Ausgabe conky anweisungen sind (script von conky ausgeführt mit execp). Da stoße ich aber auf Probleme mit der Codierung. Ein Thema um das ich mich gern versuche herumzumogeln .
Problem:
Mein Script gibt utf-8 (!?) codierte strings aus. In der Konsole werden mir Umlaute (ö, ä, ü) richtig angezeigt conky lehnt diese aber ab. Starte ich die conkyrc über die konsole bekomme ich folgende Fehlermeldung:
Code: Alles auswählen
Traceback (most recent call last):
File "/home/lukas/Dropbox/projekte/conky/mensa/mensa.py", line 50, in <module>
print "${font Ubuntu:size=9,weight:normal}${color}" + essen[i][1]
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 94: ordinal not in range(128)
Unicode, ascii, utf-8 alles begriffe die ich schon 100 mal gehört und benutzt habe aber über die ich nicht wirklich bescheid weiß. Ich mutmaße mal das u'\xf6' ein Umlaut ist und u'' für unicode steht (?). Ich hatte eigentlich erwartet, dass mein output utf-8 codiert ist.
Wegen:
Code: Alles auswählen
# -*- coding: utf-8 -*-
...
parse = BeautifulSoup(src.content.decode('utf-8', 'ignore'))
...
string = parse.find(id="id").get_string()
print " { ... } " + string
in meiner conkyrc steht folgendes:
Code: Alles auswählen
...
override_utf8_locale yes
use_xft yes
xftfont caviar dreams:size=8
...
TEXT
...
${execp python /path/mensa.py}
...
Ist dies vielleicht ein problem der schriftart ? wobei ubuntu (schriftart) ja eigentlich umlaute beinhaltet.