Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - HomeControl 1.2 Umlautproblem

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    - √ - HomeControl 1.2 Umlautproblem

    Unter Linux habe ich das Problem, dass Umlaute falsch dargestellt werden. D.h. Raumbeschreibungen die mit 1.1.1 erstellt worden sind werden nun falsch angezeigt.

    Neu erstellte Räume werden bei der Erstellung korrekt angezeigt. Beim Neuladen werden sie auch falsch angezeigt.

    Lösung wäre am Anfang der Datei einen xml-Header zu setzen, der die Kodierung angibt.

    Code:
    diff -Nur -w --exclude-from=../excludes eibPC_HC_V1.2_vanilla/lib/mh/eibPC-webservices.js eibPC_HC_V1.2/lib/mh/eibPC-webservices.js
    --- eibPC_HC_V1.2_vanilla/lib/mh/eibPC-webservices.js   2010-07-05 20:22:30.000000000 +0200
    +++ eibPC_HC_V1.2/lib/mh/eibPC-webservices.js   2010-08-12 06:54:38.000000000 +0200
    
    @@ -213,7 +230,7 @@
     function SavePanel(panelName, xml, callback){
     
         var s = new XMLSerializer();
    -    var text = s.serializeToString(xml);
    +    var text = "<?xml version=\"1.0\" encoding=\"" + document.inputEncoding + "\"?>" + s.serializeToString(xml);
     
         var fs = new mh_sys.filesystem();
         var r = fs.saveFile("/panels/" + panelName + ".xml", text);
    In diesem Header wird das Encoding direkt vom Dokument geholt. Dort ist merkwürdigerweise iso-8859-1 eingestellt. Heutzutage üblich würde ich utf-8 finden.

    Obiger Patch löst mein Umlauteproblem eigentlich.
    ABER: Wenn ich das Dokument (also eibPC-HomeControl.html oder eibPC-HCWeb.html) auf utf-8 umstelle, dann sind die Umlaute immer falsch dargestellt. D.h. beim Schreiben scheint irgendwo eine Wandlung stattzufinden. Wo das passiert konnte ich bisher nicht herausfinden.

    Erstelle ich die Raumbeschreibung "von Hand" in UTF-8, dann wird sie korrekt gelesen und zur Anzeige gebracht. Das Einlesen ist also korrekt. Beim Speichern werden die Umlaute dann kaputt gemacht.

    Mike
    Angehängte Dateien

    #2
    Hallo Mike,

    mehrere Verdachtsmomente...
    PHP arbeitet standardmäßig im Unicode, was die eigentlich beste Wahl ist.
    Könnte daher sein, dass durch fwrite im Skript savefile.php das Dokument falsch gehandhabt wird. Siehe auch http://bytes.com/topic/php/answers/1...utf-8-encoding

    Ich teste mal Dein Szenario unter Windows, in der Hoffnung, damit den Fehler auch reproduzieren zu können. Ich muss meine Ubuntu VM erst mal wieder in Betrieb nehmen...

    Du könntest ja parallel unter Linux schauen, ob das mit dem PHP Skript zu tun hat.

    Das lokale Dateihandling lassen wir im Moment lieber links liegen. Aufgrund meiner bisherigen Erfahrungen damit, überlege ich im Moment, HomeControl ausschließlich über einen Webserver zu betreiben und lediglich bei der Kommunikation eine lokale Option anbieten (unter Mozilla erstmal).

    Gruss
    Arno

    Kommentar


      #3
      Zitat von pernozzoli Beitrag anzeigen
      Du könntest ja parallel unter Linux schauen, ob das mit dem PHP Skript zu tun hat.

      Das lokale Dateihandling lassen wir im Moment lieber links liegen. Aufgrund meiner bisherigen Erfahrungen damit, überlege ich im Moment, HomeControl ausschließlich über einen Webserver zu betreiben und lediglich bei der Kommunikation eine lokale Option anbieten (unter Mozilla erstmal).
      Das habe ich vergessen zu erwähnen: Das Problem trat mit der lokalen Option auf. Mit der Web-Option ist es genau anders herum. Hier scheint immer UTF-8 verwendet zu werden?

      Ich dachte du hättest explizit irgendwo eine Transformation eingebaut. Es scheint aber genau das Gegenteil der Fall zu sein: Es wird keine Transformation angegeben und daher ist das Verhalten von Plattform zu Plattform unterschiedlich.

      Ich habe den Source so geändert, dass immer ein Header vor die XML-Daten gestellt wird. Es ist mir immer noch ein Rätsel, warum das XMLSerializer nicht selbst macht. Aber egal ...
      In diesem Header wird nun immer UTF-8 angegeben. Beim Schreiben in die lokale Datei wird ein Konverter nach UTF-8 zwischengeschaltet.
      Die Web-Seite wird auf UTF-8 gestellt.

      Mit diesem Source klappt das nun unter Linux sowohl lokal als auch per Web einwandfrei mit den Umlauten. Problematisch sind nur alte Dateien ohne den Header. Beim ersten Laden könnten daher die Umlaute falsch dargestellt sein. Hier hilft dann nur ändern im Designer oder direkt in der Datei den Header davor zu schreiben.

      Kannst du die Änderung bitte übernehmen und unter Windows testen?

      Mike
      Angehängte Dateien

      Kommentar


        #4
        Hallo,

        mache ich... muss vorher noch meinen Verteiler fertigstellen (habe in den letzten Tagen so ca. 120m Leitung verlegt), nächste Woche setze ich mich wieder an die Software.

        Gruss
        Arno

        Kommentar


          #5
          Hallo Mike,

          Dein Patch funktioniert auch unter Windows...
          Der Fehler trat im Übrigen auch unter Windows auf... hatte ihn aber übersehen.

          Vielen Dank an dieser Stelle. Das Thema könnten wir ja dann abschließen.

          Gruss
          Arno

          Kommentar


            #6
            Ja Super, wieder ein Problem gelöst

            Mike

            Kommentar

            Lädt...
            X