Conky über python script ohna umlt. (gelöst)
Verfasst: Montag 12. Januar 2015, 01:16
Hey,
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:
Das es sich um ein Problem mit der codierung der umlaute handelt ist mir sowieso klar, da conky den output jedes scripts auch nur bis zur ersten Zeile die ein Umlaut beinhalten würde darstellt.
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:
das ich die strings in listen schreibe um sie mit schleifen auszulesen sollte für die codierung keine rolle spielen oder ? Wie sieht das mit addieren von strings aus?
in meiner conkyrc steht folgendes:
das override_utf8 ist mir erst beim schreiben aufgefallen ich werde gleich nachlesen was es damit auf sich hat. Muss ich Conky sagen wie es diese Codierung zu entschlüsseln hat, oder meinem script sagen wie es den output zu formatieren hat? (beides müsste möglich sein, aber was ist in diesem fall der übliche ansatz)
Ist dies vielleicht ein problem der schriftart ? wobei ubuntu (schriftart) ja eigentlich umlaute beinhaltet.
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.