Telnet, UTF-8 und Umlaute

Begonnen von Matthias, 21 November 2013, 15:23:47

Vorheriges Thema - Nächstes Thema

Matthias

Tag zusammen,

ich spiele gerade mal wieder mit Umlauten in Alias-Attributen. Dabei ist mir in FHEM ein etwas seltsames Verhalten aufgefallen:

Ich habe mir zum testen einen Dummy gebaut:
define a dummy

Anschließend ein Umlaut als alias:
attr a alias öäü

Das funktioniert einwandfrei.

Nun ein paar Umlaute:
attr a alias ÖÄ

Auch hier, einwandfrei.

Jetzt kommt der Hammer:
attr a alias Ü

Jetzt hängt das Terminal-Fenster FHEM. Keine Regung mehr. Schließt man das Fenster und zeigt anschließend den Alias-Wert an, so ist dieser _leer_.

Macht man das Ganze mit
attr a alias ÄÜ

so findet sich im Inhalt des Alias-Attributes danach der Wert 'Ä'. Ü funktioniert augenscheinlich nicht.

Es kommt noch seltsamer. Liest man sich die UTF-8 Characters einzeln für das vorher gesetzte "ÄÜ" aus, so findet sich folgende Folge wieder:

0xc3 0x84 0xc3

0xc3 0x84 ist laut Tabelle ein großes Ä - das passt.
0xc3 ist nichts. Das gibt es so nicht. Ein Ü wäre ein 0xc3 0x9c. Das findet sich nicht.

Kann damit jemand etwas anfangen? Das sieht verdammt nach einem Umwandlungsfehler in irgendeinem Regexp aus.

Viele Grüße und vielen Dank!
Matthias

Edit:
ÜÄ als Alias zu setzen ist auch ganz nett. Das ergibt die Hex-Folge c3 c3 84 - das kann die Konsole nicht mehr parsen und stellt ein nettes Fragezeichen dar :-).


rudolfkoenig

Da du scheinbar Terminal (also die telnet Schnittstelle) verwendest: hast du das FHEM encoding Befehl abgesetzt, und mit welchen Parametern? Welches encoding verwendet dein Terminal?

Matthias

Hi,
nein, das Encoding ist auf Default. Standardmäßig nützt FHEM UTF-8, oder? Das hatte ich letztens in einem Beitrag gelesen. Die Konsole ist UTF-8 - Linux default.
Matthias

justme1968

ich hab eben dein beispiel attr a alias Üprobiert und es geht problemlos.

auf welcher platform verwendest du welchen telnet client?
hat du das encoding mit 'encoding utf8' gesetzt?
welches encoding hat deine shell/terminal fenster?

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Matthias

Hi,

seltsam. Ich habe gerade mal das encoding via
attr telnetPort encoding utf8
gesetzt. Selber Fehler.

Ich versuche jetzt mal eben noch einen Update zu machen. Die Version ist die von der FHEM-Homepage ohne Updates o.ä....

Plattform ist Ubuntu 13.10, die normale Bash.
Die Bash nutzt UTF8.

Matthias

justme1968

#5
setz mal bitte das encoding direkt in der telnetverbindung. nicht (nur) das attribut auf dem telnet device. also wirklich encoding utf8tippen.

gruss
  andre

edit: und was gibt 'locale' in der shell?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Matthias

Update gemacht => keine Änderung

encoding utf8
auch nochmal probiert. Ebenfalls keine Änderung ...

attr a alias Ü
hängt wieder. Jetzt würde mich aber wirklich interessieren, warum es bei anderen funktioniert ... /bin/sh funktioniert übrigens bei mir auch nicht ... Jetzt gehen mir die Ideen aus ...

Matthias

Noch der Output von locale (den Befehl kannte ich noch nicht :-)):

LANG=de_DE.UTF-8
LANGUAGE=de_DE
LC_CTYPE="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_PAPER="de_DE.UTF-8"
LC_NAME="de_DE.UTF-8"
LC_ADDRESS="de_DE.UTF-8"
LC_TELEPHONE="de_DE.UTF-8"
LC_MEASUREMENT="de_DE.UTF-8"
LC_IDENTIFICATION="de_DE.UTF-8"
LC_ALL=


Sieht auch stark nach UTF8 aus ...

justme1968

was gibt 'locale' auf der shell?

sh ist ziemlich sicher nur ein alias für die bash mit etwas anderen defaults.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Matthias

@justme1968: siehe oben :-). Sorry, wir haben uns gerade etwas gekreuzt.

justme1968

das schaut nach utf8 aus.

bitte setz mal den alias im web frontend und schau ihn dir da an und auch per telnet.

die frage ist ob es beim setzen schief geht oder beim auslesen oder beim übertragen und anzeigen.

du kannst auch mal die telnet debug ausgabe einschalten. dann siehst du auf byte ebene was übertragen wird.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Matthias

Ok, wenn ich den Alias via fhemweb setze, dann wird er in beiden Frontends richtig angezeigt. Setze ich den Alias über Telnet, bekomme ich in FHEMWEB ein paar Fragezeigen. Jetzt schaue ich noch eben nach der Debug Ausgabe, moment ...

justme1968

also wenn du telnet offen hast:

- ^] senden
- set netdata on
- ^] senden
- set prettydump on

dann ein list auf deinen dummy

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Matthias

Seltsam, diese Kommandos wollen bei mir nicht. Muss man irgendwo noch ein netdata bzw. ein prettydump definieren? Sonst bekomme ich nur

fhem> ^]
Unknown command ^], try help.
fhem> set netdata on
Please define netdata first
fhem>

Ich bin schon richtig in der FHEM-Telnet-Konsole, oder?

Bei Verbose 5 findet man alle Kommandos, die in FHEM ankommen.

Ein
attr a alias ÜÄ

findet sich im Log dann als
2013.11.21 15:57:05 5: Cmd: >attr a alias �<

wieder.

Matthias

Dämlich. Den Debug Modus habe ich gefunden - IBM hat eine nette Doku dazu. Daten bekomme ich trotzdem nicht angezeigt ... ich versuche es mal noch weiter.