Schrolli91 / BOSWatch

Python Script to process input data from rtl_fm and multimon-NG - multiple Plugin support
https://bwcc.boswatch.de
GNU General Public License v2.0
133 stars 59 forks source link

Umlaute als Ausgabe eines Plugins #486

Closed Maagi93 closed 3 years ago

Maagi93 commented 3 years ago

Hallo zusammen,

habe mir ein kleines Plugin aus dem template-Plugin gebaut, das Alarme für spezielle RICs in eine .csv Datei schreibt:

datei = open('/home/pi/Documents/boswatch_log/poc.csv','a+') datei.write(datum+","+zeit+","+wochentag+","+zeitraum+","+data["ric"]+","+data["description"]+","+data["msg"]+"\n") datei.close()

Das funktioniert soweit auch, allerdings bekomme ich Umlaute nicht korrekt angezeigt, sondern z.B. "ö" statt "ö" oder "ü" statt "ü".

Wie kann ich die Strings umwandeln, damit meine Ausgabe korrekt wird?

Vielen Dank und viele Grüße!

Schrolli91 commented 3 years ago

Wenn du beim schreiben das File im UTF-8 Encoding öffnest, sollte das Problem schon erledigt sein

Maagi93 commented 3 years ago

Danke für die schnelle Antwort! Wie mache ich das?

Mein Python Datei beginnt mit: image

Meinst du das? Oder wie kann ich das File im UTF-8 Encoding öffnen?

Schrolli91 commented 3 years ago

siehe https://stackoverflow.com/a/4112897

data = file('file.txt').read()
... process data ...
data = data.encode('utf-8')
file('file2.txt','w').write( data )
Maagi93 commented 3 years ago

ich habe das nun so in meinen Code integriert:

`elif typ == "POC":

            description = data["description"].encode('utf-8')

            #Dokumentation von ausgewählten POC
            if data["ric"] in globalVars.config.get("Alarmbot", "activeric"):
                logging.warning("POC_Alarm Meldung wird in /home/pi/Documents/boswatch_log/poc_ausge_poc.csv gespeichert!")
                datei = open('/home/pi/Documents/boswatch_log/poc_ausge_poc.csv','a+')
                datei.write(datum+","+zeit+","+wochentag+","+zeitraum+","+data["ric"]+","+description+","+data["msg"]+"\n")
                datei.close()

`

Wenn ich das Ganze nun teste erhalte ich diese Fehlermeldung im Boswatch-Log:

10.10.2020 10:21:21 - Alarmbot [DEBUG ] unknown error Traceback (most recent call last): File "/opt/boswatch/plugins/Alarmbot/Alarmbot.py", line 172, in run description = data["description"].encode('utf-8') UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 5: ordinal not in range(128)

Maagi93 commented 3 years ago

Habe es nun hinbekommen. Die Lösung stand auch in deinem Kommentar...

Ich hatte die ganze Zeit in eine .csv-Datei geschrieben. Seit ich in eine .txt-Datei schreibe funktioniert es, auch ohne encoding!

Vielen Dank für deine Unterstützung!