Seite utf-8 kodiert, welches Vorgehen?

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

  • Seite utf-8 kodiert, welches Vorgehen?

    Ich hab ein kleines Problem, eine Seite ist vollständig UTF-8 kodiert.

    Dort habe ich ein Eingabeformular, Beispiel Login.
    Dieser Name wird in ein Cookie gespeichert und beim nächsten Besuch wieder angezeigt.

    Das Problem ist aber, dass ich ja die Ausgabe der Seite utf-8 kodiere, grob gesagt am ende ist ein echo utf8_encode($content); welcher mir alles schön kodiert.

    Aber damit habe ich dann ja Probleme, denn der Login, den ich im Cookie gespeichert habe, ist ja utf-8 kodiert und wird auf der Seite irgendwo angezeigt, "Willkommen {name}".
    Wenn ich nun meinen String mit dem Cookie Wert fülle, so bekomme ich ja murks bei der Ausgabe, weil ich an dieser Stelle utf-8 nochmal mit utf-8 kodiere.

    Wie sollte man da vorgehen? Zum Beispiel habe ich keinerlei Probleme mit der mysql Verbindung, die Tabelle ist UTF-8 und die Client-Verbindung auch, ich kann dort also ohne Probleme den utf-8 kodierten Login namen ins query packen und es klappt auch mit umlauten

    Aber was machen, bei dem oben beschriebenen Problem?
    SQL Injection kitteh is...

  • #2
    Das Problem ist aber, dass ich ja die Ausgabe der Seite utf-8 kodiere, grob gesagt am ende ist ein echo utf8_encode($content); welcher mir alles schön kodiert.
    das sollte im Normalfall gar nicht nötig sein, wenn du die Daten entsprechend vorhältst.

    Kommentar


    • #3
      Teilkomponenten der Struktur, also Templates kommen nicht von mir und sind oft falsch kodiert, daher das kodieren am Ende.

      Du meinst ich sollte die Kodierung nur auf einzelne Teile anwenden?

      Wie sieht denn dann so etwas aus
      PHP-Code:
      <?php
      $var 
      "öäüß";

      header("Content-type: text/html; charset=UTF-8");
      echo 
      $var;
      ?>
      Würde dies nicht falsch interpretiert werden? Oder wäre $var automatisch dann utf-8?

      In dem Zusammenhang hatte ich, meine ich, das Problem, dass meine wirklichen Kodierung in dem obigen Fall ISO war, der Header aber abweichend den Content Type als utf-8 deklariert hat
      SQL Injection kitteh is...

      Kommentar


      • #4
        Teilkomponenten der Struktur, also Templates kommen nicht von mir und sind oft falsch kodiert, daher das kodieren am Ende.

        Du meinst ich sollte die Kodierung nur auf einzelne Teile anwenden?
        Nee, ich meine dass du alle Teile schon vorher entsprechend encodet haben sollst.
        Also gerade bei so lächerlichen Sachen wie Templates muss das einfach möglich sein. Ich könnte maximal nachvollziehen, wenn du nen externen Webservice abfragst, dass du da noch was on the fly kodieren musst. Aber doch nicht bei Bestandsdaten deines EIGENEN Systems.

        Würde dies nicht falsch interpretiert werden? Oder wäre $var automatisch dann utf-8?
        Kommt drauf an, als was du deine Datei speicherst...

        In dem Zusammenhang hatte ich, meine ich, das Problem, dass meine wirklichen Kodierung in dem obigen Fall ISO war, der Header aber abweichend den Content Type als utf-8 deklariert hat
        Du kennst doch dein Problem, warum überarbeitest du nicht einfach deine Fehler und freust dich über nen sauberes System, anstatt hier jeden einzelnen bestandteil deiner Anwendung so umzukodieren, wie du ihn aktuell brauchst? Oder willst du bei der nächsten Änderung deines Designers wieder die komplette Software anpassen?
        Zuletzt geändert von TobiaZ; 05.02.2008, 14:38.

        Kommentar


        • #5
          Sind zwei paar Schuhe, beim Beispiel oben meinte ich dies als Ausgabe an den Browser, erkennt er da dass die $var utf8 ist?

          Und ich kann das System nicht umschreiben, ich habe es nicht entwickelt und es gibt keine Ressourcen für ein komplettes Refactoring, ich wühle quasi in Resten hier
          SQL Injection kitteh is...

          Kommentar


          • #6
            Sind zwei paar Schuhe, beim Beispiel oben meinte ich dies als Ausgabe an den Browser, erkennt er da dass die $var utf8 ist?
            Wenn die Variable utf8 ist und dem browser der entsprechende header/meta-tag gezeigt wird: na klar.
            Wie gesagt, wenn du die datei nicht als utf-8 speicherst, wird der natürlich mucken.

            Beides eigentlich logisch!

            Und ich kann das System nicht umschreiben, ich habe es nicht entwickelt und es gibt keine Ressourcen für ein komplettes Refactoring, ich wühle quasi in Resten hier
            Viel Spaß! Jetzt weißt du ja, wo deine Probleme liegen. Warum tauchen die eigentlich erst jetzt auf?

            Kommentar


            • #7
              Wenn die Variable utf8
              Was heißt das? Wann ist eine Variable utf8?

              Die PHP Datei ist natürlich als UTF-8 gespeichert, aber die $var ist einfach als $var = "öäüß"; deklariert


              Warum tauchen die eigentlich erst jetzt auf?
              Das weiß ich nicht, das System ist hier seit einem Jahr stabil und auf einmal tritt dieses Fehler auf, obwohl mir nicht klar ist, was passiert ist, denn eigentlich war niemand am code dran
              SQL Injection kitteh is...

              Kommentar


              • #8
                Was heißt das? Wann ist eine Variable utf8?
                Die PHP Datei ist natürlich als UTF-8 gespeichert, aber die $var ist einfach als $var = "öäüß"; deklariert
                Ja, dann ist alles so wie es sein soll. Also wird die Variable auch korrekt ausgegeben.

                Das weiß ich nicht, das System ist hier seit einem Jahr stabil und auf einmal tritt dieses Fehler auf, obwohl mir nicht klar ist, was passiert ist, denn eigentlich war niemand am code dran
                Ja, das ist immer so.

                Kommentar


                • #9
                  Original geschrieben von Seikilos
                  Und ich kann das System nicht umschreiben, ich habe es nicht entwickelt und es gibt keine Ressourcen für ein komplettes Refactoring, ich wühle quasi in Resten hier [/B]
                  Du sollst auch nicht das System umschreiben, du sollst einfach nur deine Templates UTF-8 kodieren.

                  Ist nen typischer Fall für

                  Code:
                  find . -name '*.tpl' -exec recode latin1..u8 {} \;

                  Kommentar


                  • #10
                    Kann man eigentlich die kodierung eines String irgendwie ermitteln? Das wäre wenigstens eine "erste Hilfe" für das Problem.
                    SQL Injection kitteh is...

                    Kommentar


                    • #11
                      Original geschrieben von Seikilos
                      Kann man eigentlich die kodierung eines String irgendwie ermitteln? Das wäre wenigstens eine "erste Hilfe" für das Problem.
                      Ja, mit http://de2.php.net/manual/en/functio...t-encoding.php

                      Kommentar


                      • #12
                        Oh, großartig, das rettet mir erstmal den Rest des Tages

                        Danke euch beiden.

                        Hab ne Menge lernen können
                        SQL Injection kitteh is...

                        Kommentar

                        Lädt...
                        X