Hauptmenü

codierung \x{e2}

Begonnen von Guybrush, 26 August 2022, 20:43:09

Vorheriges Thema - Nächstes Thema

Guybrush

Kann mir jemand sagen, was für eine codierung \x{e2} ist? Das ist doch kein richtiges utf8?!

Hintergrund ist der, dass das 86_Robonect Modul als Fehlermeldung z.b. "M�heinheit ist blockiert" zurück liefert. Laut Dumper ist es intern "M\x{e2}heinheit ist blockiert". Das scheint an der Robonect_callback() zu liegen, wo ein encode_utf8 vor dem decode_json erfolgt, was ja grundsätzlich ok ist, weil sich utf8 mit json ja nicht sonderlich gut verträgt. Allerdings wird dann später beim Schreiben der Errormessage ignoriert, dass zuvor ein encode_utf8 gemacht wurde.


readingsSingleUpdate($hash, "fehler_aktuell", $answer->{error}->{error_message}, 1);


Allerdings bringt funktioniert ein decode_utf8 auch nicht. Intern scheint es als Binär definiert zu sein. Jemand eine Idee?

Beta-User

Möglichst auf umwandeln verzichten? Unicode first help.... (Und was ich per pm schon mal angemerkt hatte, oder?)
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Guybrush

Zitat von: Beta-User am 26 August 2022, 21:14:32
Möglichst auf umwandeln verzichten? Unicode first help.... (Und was ich per pm schon mal angemerkt hatte, oder?)

ich hab das 86_Robonect Modul nicht geschrieben. Das hätte ich da auch anders gemacht, aber ist ja nun mal so. Trotzdem bleibt die Frage was das für eine Codierung ist? Hab mir da jetzt ein Userreading angelegt und schreib da das reading "fehler_aktuell" rein. Aber die Codierung hat nicht hin, wenn ich ein decode_utf8 drauf mache...  :-\ muss also falsch codiert zurückkommen.

Beta-User

Na ja, der Maintainer wird sich vielleicht über einen patch freuen, falls JSON->new->decode() ganz ohne irgendwelche Klimmzüge vorneweg bessere Ergebnisse liefert...
decode_json() ist halt oft in copy-paste-Modulen zu finden...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Guybrush

hatte ich testweise schon probiert. ist das gleiche resultat. das problem ist aber ja, was für eine codierung das ist. sofern ich das richtig zu einem "ä" decodiert bekomm, kann ich auch einen patch machen. ich bin grad nur ratlos. hab sogar mal neben UTF8 noch utf-8 und utf8 probiert. richtig decoden tut er es mit keinem. deswegen ja die frage, was für eine codierung das ist  ::)

Beta-User

Sicherheitshalber: Die Klimmzüge hinterher hattest du auch deaktiviert?

In dem "first aid"-Thread gab's übrigens auch mind. einen Schnippsel, mit dem man versuchen könnte, die Kodierung (dynamisch) zu erraten.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

Guybrush

erraten ist so eine Sache  :P

was meinst du aber mit Klimmzüge? Da steh ich grad aufm Schlauch

Beta-User

Stichwort ist "umlaut" (der Hash): Da wird nachträglich (!), also nach decode_json() noch irgendwas am Ergebnis rumgebastelt, um es in "HTML-Schreibweise" zu konvertieren... (Btw.: dass man einen kompletten Hash auf die Weise "verregexen" kann, war mir bis dahin noch nie begegnet).

Behaupte immer noch: Weg mit den ganzen Konvertierungen und "gut ist"...
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files