wget und deutsche Umlaute - wie handhaben?

Allgemeines zur HomeMatic Haussteuerung

Moderator: Co-Administratoren

Antworten
Benutzeravatar
Baxxy
Beiträge: 10833
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 608 Mal
Danksagung erhalten: 2228 Mal

wget und deutsche Umlaute - wie handhaben?

Beitrag von Baxxy » 21.08.2021, 17:21

Ich teste gerade @MichaleN's JSON-APIs auswerten - Script mit der OpenWeather One Call API.

Läuft wunderbar, nur die deutsche Umlaute machen Probleme.
Schon in der Rückgabe sieht es so aus:

Code: Alles auswählen

description:Mäßig bewölkt\
Was dann natürlich auch so in die SysVar geschrieben würde:

Code: Alles auswählen

JSON_current_weather_description0 = 'Mäßig bewölkt'
Im Browser aufgerufen wird das korrekt dargestellt:
OWM_Umlaute_OK_2.JPG
OWM_Umlaute_OK_2.JPG (12.77 KiB) 901 mal betrachtet
Nun habe ich mich ein bisschen mit wget beschäftigt und auch Optionen gefunden die vielleicht hilfreich wären.

Code: Alles auswählen

‘--local-encoding=encoding’
oder

Code: Alles auswählen

‘--remote-encoding=encoding’
Also den wget-Aufruf zum testen angepasst...

Code: Alles auswählen

wget --no-check-certificate --local-encoding=utf-8 --timeout=2 -O -
... geht aber nicht.

Code: Alles auswählen

[error             ](string ): This version does not have support for IRIs
Also versucht in der /etc/wgetrc den Support "zu aktivieren"...

Code: Alles auswählen

# Force the default system encoding
localencoding = UTF-8
... da tut sich trotzdem nichts.

Vielleicht hat je jemand eine gute Idee oder Lösung zum Thema.
(zur Not stelle ich die API auf englisch und "übersetze" dann im Script)

Benutzeravatar
Black
Beiträge: 5481
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 424 Mal
Danksagung erhalten: 1074 Mal
Kontaktdaten:

Re: wget und deutsche Umlaute - wie handhaben?

Beitrag von Black » 21.08.2021, 17:29

Baxxy hat geschrieben:
21.08.2021, 17:21
Ich teste gerade @MichaleN's JSON-APIs auswerten - Script mit der OpenWeather One Call API.
bringt .ToLatin() Besserung ?

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Benutzeravatar
Baxxy
Beiträge: 10833
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 608 Mal
Danksagung erhalten: 2228 Mal

Re: wget und deutsche Umlaute - wie handhaben?

Beitrag von Baxxy » 21.08.2021, 17:39

Black hat geschrieben:
21.08.2021, 17:29
Besserung ?
Da du ja heute schon nen Weizen zum Frühstück hattest bekommst du jetzt keins... :P

Jap, läuft. :D
Kleine Extrazeile in MichaelN's Script:

Code: Alles auswählen

rueck = rueck.ToLatin();
...und schwupps:

Code: Alles auswählen

JSON_1_weather_description0 = 'Mäßiger Regen' 
Wunderbar!

Grüße
Baxxy

Benutzeravatar
jmaus
Beiträge: 9864
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 464 Mal
Danksagung erhalten: 1881 Mal
Kontaktdaten:

Re: wget und deutsche Umlaute - wie handhaben?

Beitrag von jmaus » 21.08.2021, 20:32

Anstatt die Rega mit dem ganzen JSON geparse und Encoding zu überfordern, würd eich vmtl für all diese aufgaben ein shell script generieren der via 'jq' tool in kombination mit 'iconv' das von wget zurückgegebene JSON parst (eben via jq) und dann via iconv von utf8 in latin konvertiert. Das sollte man so dann problemloser und ressourcenschonender via system.Exec() aufrufen können und am schluss vllt sogar schneller und performanzer zum gleichen ergebnis kommen.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

MichaelN
Beiträge: 9679
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: wget und deutsche Umlaute - wie handhaben?

Beitrag von MichaelN » 21.08.2021, 20:45

Außer "und" habe ich nicht viel verstanden.Man nutzt eben die Werkzeuge, n die man hat. Und eine CCU 3 ist IMHO weit von einer Überforderung weg.

Man sollte natürlich kein mega json wie die OWM 5 Tage vorhersage sekündlich parsen. Normale JSON laufen in 0,1sec oder schneller durch.

Letztlich war es für mich auch eher eine Art Technik Demonstration, was machbar ist.
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

MichaelN
Beiträge: 9679
Registriert: 27.04.2020, 10:34
System: CCU
Hat sich bedankt: 700 Mal
Danksagung erhalten: 1626 Mal

Re: wget und deutsche Umlaute - wie handhaben?

Beitrag von MichaelN » 23.08.2021, 09:40

Ich hatte angenommen, das ich einfach immer .ToLatin() anwenden kann, aber wenn der String schon ISO 8859 definiert ist, dann werden die Umlaute entfernt. Ist das das gewünschte Verhalten der Funktion?

Code: Alles auswählen

string test = "mäßig bewölkt";
WriteLine(test);
test = test.ToLatin();
WriteLine(test);    
Ausgabe

Code: Alles auswählen

mäßig bewölkt
mig bewlkt
LG, Michael.

Wenn du eine App zur Bedienung brauchst, dann hast du kein Smarthome.

Wettervorhersage über AccuWeather oder OpenWeatherMap+++ Rollladensteuerung 2.0 +++ JSON-API-Ausgaben auswerten +++ undokumentierte Skript-Befehle und Debugging-Tipps +++

Benutzeravatar
jmaus
Beiträge: 9864
Registriert: 17.02.2015, 14:45
System: Alternative CCU (auf Basis OCCU)
Wohnort: Dresden
Hat sich bedankt: 464 Mal
Danksagung erhalten: 1881 Mal
Kontaktdaten:

Re: wget und deutsche Umlaute - wie handhaben?

Beitrag von jmaus » 23.08.2021, 10:29

Ja, so ist das. Die Funktion wandelt eben ein utf8 String (von dem DU weisst das er utf8 kodiert ist) in iso-8859-1 um. Und wenn der schon iso-8859-1 kodiert ist kommt eben müll raus. Daher muss man schon vorher wissen in welcher kodierung ein string gerade vorliegt.
RaspberryMatic 3.75.7.20240420 @ ProxmoxVE – ~200 Hm-RF/HmIP-RF/HmIPW Geräte + ioBroker + HomeAssistant – GitHub / Sponsors / PayPal / ☕️

Antworten

Zurück zu „HomeMatic allgemein“