Unicode FritzBox: Unterschied zwischen den Versionen

Aus FHEMWiki
K (Kategorisiert; weitere kleine Änderungen)
KKeine Bearbeitungszusammenfassung
Zeile 15: Zeile 15:


== Lösung ==
== Lösung ==
# Datei heavy.pl runterladen [https://github.com/dwimperl/perl-5.14.2.1-32bit-windows/blob/master/perl/lib/unicore/Heavy.pl]
# Datei Heavy.pl runterladen [https://github.com/dwimperl/perl-5.14.2.1-32bit-windows/blob/master/perl/lib/unicore/Heavy.pl]
# Verzeichnis "unicore" erstellen unter /var/InternerSpeicher/fhem/lib/perl5/5.12.2/
# Verzeichnis "unicore" erstellen unter /var/InternerSpeicher/fhem/lib/perl5/5.12.2/
# Datei heavy.pl erstellen in /var/InternerSpeicher/fhem/lib/perl5/5.12.2/unicore/
# Datei Heavy.pl erstellen in /var/InternerSpeicher/fhem/lib/perl5/5.12.2/unicore/
# ggf. Dateirechte ändern
# ggf. Dateirechte ändern
# fhem restart
# fhem restart
'''Wichtig''': das große "H" am Anfang des Datei-Namens


[[Kategorie:FritzBox]]
[[Kategorie:FritzBox]]

Version vom 13. Oktober 2013, 20:26 Uhr

Problem

FHEM beendet sich bzw. Module funktionieren nicht richtig, wenn Daten verarbeitet werden, die Umlaute verwenden. Dies ist in einigen FHEM Modulen der Fall. Aufgefallen bzw. beschrieben wurde der Fehler im Forum bezüglich HUEBridge[1] und GDS[2].

Dokumentierte Fehlermeldungen über die Linux console (Meldung war nicht im FHEM Log zu sehen):

 Can't locate unicore/Heavy.pl in @INC (@INC contains: /var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2/mips-linux
  /var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2/mips-linux /var/InternerSpeicher/fhem/lib/perl5/site_perl/5.12.2
  /var/InternerSpeicher/fhem/lib/perl5/5.12.2/mips-linux /var/InternerSpeicher/fhem/lib/perl5/5.12.2/mips-linux
  /var/InternerSpeicher/fhem/lib/perl5/5.12.2 /opt/lib/perl5/site_perl/5.12.2/mips-linux /opt/lib/perl5/site_perl/5.12.2
  /opt/lib/perl5/5.12.2/mips-linux /opt/lib/perl5/5.12.2 . ./FHEM) at /var/InternerSpeicher/fhem/lib/perl5/5.12.2/utf8_heavy.pl line 96.

Vermutung

Es scheint so zu sein, dass die Perl Version auf den fritzboxen unvollständig ist, was aber nur auffällt, sobald Encode oder Decode auf Daten trifft, die wirklich Unicode bzw UTF8 sind. Das schlägt natürlich auch dann, zu wenn ein Modul, das Encode/Decode nicht direkt verwendet sondern nur indirekt wie z.b. bei hue über JSON, beim iTunes Modul über DAAP::DMAP und bei dem Swap Modul und scheinbar bei GDS über XML::Simple.

Eine Funktion in utf8_heavy.pl versucht auf .\unicore\Heavy.pl zuzugreifen. Diese Datei ist auf der Fritz!Box nicht vorhanden und das führt zum Absturz von FHEM.

Lösung

  1. Datei Heavy.pl runterladen [3]
  2. Verzeichnis "unicore" erstellen unter /var/InternerSpeicher/fhem/lib/perl5/5.12.2/
  3. Datei Heavy.pl erstellen in /var/InternerSpeicher/fhem/lib/perl5/5.12.2/unicore/
  4. ggf. Dateirechte ändern
  5. fhem restart

Wichtig: das große "H" am Anfang des Datei-Namens