ewaldshof / ewhome

GNU General Public License v3.0
0 stars 0 forks source link

Character-Encoding der config stimmt nicht. #12

Closed ewaldshof closed 4 years ago

ewaldshof commented 4 years ago

Aus diesem YAML:

raeume:
  A/2/4:
    name:       "Büro"
    fbh_kreise: 2 
  A/1/3:
    name:       "Küche"
    fbh_kreise: 5

wird dieses JSON

{"raeume": {"A/2/4": {"name": "B\u00c3\u00bcro", "fbh_kreise": 2},  "A/1/3": {"name": "K\u00c3\u00bcche", "fbh_kreise": 5}}}}

\u00c3\u00bc ist ü

scy commented 4 years ago

Interessant, bei mir passiert das nicht. Rufst du push-config-to-mqtt.py mit Python 2 oder Python 3 auf?

scy commented 4 years ago

Die Dokumentation von PyYAML besagt:

yaml.load accepts a byte string, a Unicode string, an open binary file object, or an open text file object. A byte string or a file must be encoded with utf-8, utf-16-be or utf-16-le encoding. yaml.load detects the encoding by checking the BOM (byte order mark) sequence at the beginning of the string/file. If no BOM is present, the utf-8 encoding is assumed.

Wenn die Datei in UTF-8 oder UTF-16 kodiert ist, sollte sie also korrekt eingelesen werden. Sie kommt aber offensichtlich schon kaputt bei json.dumps an, denn sonst würde es nicht aus einem einzigen Unicode-Zeichen (das ü, das eigentlich \u00fc sein sollte) zwei machen.

Bist du sicher, dass die Datei korrektes UTF-8 ist? Mit welchem Editor bearbeitest du sie, auf welchem Betriebssystem? Kannst du mal mit einem Hexeditor reinschauen? (Unter Linux z.B. mit hexdump -C ewhome.yaml.) Büro sollte als 42 c3 bc 72 6f dargestellt werden, keinesfalls als 42 c3 83 c2 bc 72 6f, das wäre dann nämlich doppelt kodiert.

Alternativ kannst du auch gern die Datei als Anhang(!) hier anhängen, dann schau ich sie mir selbst an. Wichtig ist, dass du sie original 1:1 anhängst (per Drag & Drop in das Kommentar-Textfeld) und nicht etwa den Inhalt copy-pastest, denn dann können dein Editor und Browser allerlei Konvertierungen dazwischen schalten, die die Aussagekraft zunichte machen.)

Wir können uns das auch gern per Screensharing auf deinem System anschauen, mach mir einfach 1–2 Terminvorschläge.

ewaldshof commented 4 years ago

Hi,

der großartike 010-Editor sagt, das ü wäre als C3 BC kodiert, also UTF-8

with open(filename, "r") as file: config = load(file, Loader=Loader) print(config)

Produziert schon kaputten output.

Python ist 3.7.0 auf Windows 10 x64 pyyaml 5.1.2 und 5.3 produzieren das gleiche Ergebnis.

Das hier löst das Problem: import io with io.open(filename, mode="r", encoding="utf-8") as file: config = load(file, Loader=Loader)

ist eingecheckt.

Grüße,

Kolja

Am Do., 27. Feb. 2020 um 18:30 Uhr schrieb Tim Weber < notifications@github.com>:

Die Dokumentation von PyYAML https://pyyaml.org/wiki/PyYAMLDocumentation besagt:

yaml.load accepts a byte string, a Unicode string, an open binary file object, or an open text file object. A byte string or a file must be encoded with utf-8, utf-16-be or utf-16-le encoding. yaml.load detects the encoding by checking the BOM (byte order mark) sequence at the beginning of the string/file. If no BOM is present, the utf-8 encoding is assumed.

Wenn die Datei in UTF-8 oder UTF-16 kodiert ist, sollte sie also korrekt eingelesen werden. Sie kommt aber offensichtlich schon kaputt bei json.dumps an, denn sonst würde es nicht aus einem einzigen Unicode-Zeichen (das ü, das eigentlich \u00fc sein sollte) zwei machen.

Bist du sicher, dass die Datei korrektes UTF-8 ist? Mit welchem Editor bearbeitest du sie, auf welchem Betriebssystem? Kannst du mal mit einem Hexeditor reinschauen? (Unter Linux z.B. mit hexdump -C ewhome.yaml.) Büro sollte als 42 c3 bc 72 6f dargestellt werden, keinesfalls als 42 c3 83 c2 bc 72 6f, das wäre dann nämlich doppelt kodiert.

Alternativ kannst du auch gern die Datei als Anhang(!) hier anhängen, dann schau ich sie mir selbst an. Wichtig ist, dass du sie original 1:1 anhängst (per Drag & Drop in das Kommentar-Textfeld) und nicht etwa den Inhalt copy-pastest, denn dann können dein Editor und Browser allerlei Konvertierungen dazwischen schalten, die die Aussagekraft zunichte machen.)

Wir können uns das auch gern per Screensharing auf deinem System anschauen, mach mir einfach 1–2 Terminvorschläge.

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/ewaldshof/ewhome/issues/12?email_source=notifications&email_token=AMBU3ONUI7RYDWYVDK3FWJTRE7ZKTA5CNFSM4K46DOWKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOENFGM6A#issuecomment-592078456, or unsubscribe https://github.com/notifications/unsubscribe-auth/AMBU3OPNFB6PZAQ7NS3HXHTRE7ZKTANCNFSM4K46DOWA .

-- Telefon 069 173 20 256 1 cronologic GmbH & Co. KG Frankfurt am Main HRA 42869 beim Amtsgericht Frankfurt Komplementärin: cronologic Verwaltungs GmbH Frankfurt am Main Geschäftsführer: Kolja Sulimma und Dr. Till Jahnke

scy commented 4 years ago

Ist aber noch nicht gepusht, oder? So wie ich das sehe, wurde das letzte Mal im November Code gepusht.

ewaldshof commented 4 years ago

Kolja und git....

Jetzt sollte es gepusht sein.

Das Frontend für die Fußbodenheizung ist vollständig. Jetzt ist Konfiguration und Debugging angesagt.

Grüße,

Kolja

Am Do., 27. Feb. 2020 um 23:00 Uhr schrieb Tim Weber < notifications@github.com>:

Ist aber noch nicht gepusht, oder? So wie ich das sehe, wurde das letzte Mal im November Code gepusht.

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub https://github.com/ewaldshof/ewhome/issues/12?email_source=notifications&email_token=AMBU3OOGXUINHNIJB244ETTRFAYV5A5CNFSM4K46DOWKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOENGC2RQ#issuecomment-592194886, or unsubscribe https://github.com/notifications/unsubscribe-auth/AMBU3ONIOGSGYONTMLKMUGTRFAYV5ANCNFSM4K46DOWA .

-- Telefon 069 173 20 256 1 cronologic GmbH & Co. KG Frankfurt am Main HRA 42869 beim Amtsgericht Frankfurt Komplementärin: cronologic Verwaltungs GmbH Frankfurt am Main Geschäftsführer: Kolja Sulimma und Dr. Till Jahnke

swaldtmann commented 4 years ago

Großartig!

ewaldshof notifications@github.com schrieb am Fr. 28. Feb. 2020 um 07:30:

Kolja und git....

Jetzt sollte es gepusht sein.

Das Frontend für die Fußbodenheizung ist vollständig. Jetzt ist Konfiguration und Debugging angesagt.

Grüße,

Kolja

Am Do., 27. Feb. 2020 um 23:00 Uhr schrieb Tim Weber < notifications@github.com>:

Ist aber noch nicht gepusht, oder? So wie ich das sehe, wurde das letzte Mal im November Code gepusht.

— You are receiving this because you modified the open/close state. Reply to this email directly, view it on GitHub < https://github.com/ewaldshof/ewhome/issues/12?email_source=notifications&email_token=AMBU3OOGXUINHNIJB244ETTRFAYV5A5CNFSM4K46DOWKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOENGC2RQ#issuecomment-592194886 , or unsubscribe < https://github.com/notifications/unsubscribe-auth/AMBU3ONIOGSGYONTMLKMUGTRFAYV5ANCNFSM4K46DOWA

.

-- Telefon 069 173 20 256 1 cronologic GmbH & Co. KG Frankfurt am Main HRA 42869 beim Amtsgericht Frankfurt Komplementärin: cronologic Verwaltungs GmbH Frankfurt am Main Geschäftsführer: Kolja Sulimma und Dr. Till Jahnke

You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/ewaldshof/ewhome/issues/12?email_source=notifications&email_token=AAVKF4D6CCU3SZDX5DTUSGLRFCVO7A5CNFSM4K46DOWKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOENHFHCA#issuecomment-592335752, or unsubscribe https://github.com/notifications/unsubscribe-auth/AAVKF4CAX7TJFQCXRVUBO5TRFCVO7ANCNFSM4K46DOWA .

-- — Stephan Waldtmann, Bahnhofstr. 31, 61194 Niddatal stephan@waldtmann.de 0172 - 512 45 76