PHP 5.4: htmlentities() -> standardmäßig UTF-8

  • ENTFERNT - da es sich um ein anderes Problem handelt(e) ;)


    Update: Warum bemerkt man die einfachen Lösungen immer erst, wenn man in Foren postet? :D
    htmlentities() wurde in PHP 5.4 verändert, wodurch Nicht-Unicode-Zeichen dazu führten, dass nichts ausgegeben wurde. Echt toll... :rolleyes:



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

    5 Mal editiert, zuletzt von KB19 () aus folgendem Grund: Titel angepasst

  • Vielleicht hilft dir das hier weiter:

    Code
    $variable = htmlentities($variable], ENT_QUOTES, 'UTF-8');


    Ich kann mir nur vorstellen, dass die PHP-Entwickler UTF-8 zum Standard machen wollen und so jeden Admin zum Handeln bewegen wollen.
    Dann macht es nämlich wieder Sinn. ;)

    Schöne Grüße aus der Lüneburger Heide!
    Thomas

  • So habe ich es dann mit ISO-8859-15 auch gelöst und es stimmt, dass sie UTF-8 zum Standard gemacht haben, siehe PHP-Doku ;)


    Ganz verstehen kann ich so eine Entscheidung trotzdem nicht. Denn dadurch kann man zig alte Scripte, die seit PHP 4 einwandfrei funktionieren in die Tonne treten oder muss sie abändern...



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Verbesserungen? Hallo? Den Standardwert auf ein anderes Encoding zu setzen ist keine Verbesserung (da man den UTF-8 Parameter bereits seit Jahren einfach immer anhängen kann...) :(



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Man könnte es aber auch so sehen: "Die schlechte Unicode-Unterstützung von PHP nervt gewaltig, da will ich nicht bei jeder Funktion noch irgendwelche Parameter anhängen müssen." ;)

  • Wenn es nach der schlechten oder unlogischen Belegung von Standardwerten oder um die Reihenfolge von Parameter geht könnte man ganze Bücher füllen. Die Kompatibilität mit alten Scripten damit zu brechen steht meiner Meinung nach in keiner Relation dazu. Da hätte man sonst schon ganz andere Dinge ändern müssen. Wenn man das bei einem Major Release macht, sehe ich es vielleicht noch ein. Aber nur, weil PHP 6 wieder eingestampft wurde und alles zu 5.x zurückportiert wird, gleich in den Minor Releases solche Änderungen durchzuführen, nervt mich ehrlich gesagt 1000x mehr als ein weiterer Parameter für UTF-8 ;)


    Aber was solls, dann verwende ich in alten Scripten halt nur noch einen Wrapper für die htmlentities() Funktion und bau den mit sed überall ein... :huh:



    MfG Christian

    "Wer nur noch Enten sieht, hat die Kontrolle über seine Server verloren." (Netzentenfund)

  • Ich bin da genau anderer Ansicht!
    Wenn ich hin und wieder mal das Auto nicht neu erfinden möchte, greife ich auch schon mal auf fertige Scripte zurück.
    Wenn ich dann bescheuerte *sorry* Ausgaben bekomme, nur weil die Kodierung antiquarisch daher kommt, schreibe ich eh schon alles freiwillig um.
    Was dann dazu führt, dass ich oft doch alles neu schreibe.


    Geschweige, wenn in den Scripten alte und deprecatet Anweisungen drin stehen muss ich sie unter Umständen eh umschreiben, da kann ich auch gleich nach UTF-8 konvertieren.


    Die Zeit bleibt nun mal nicht stehen und wir haben uns schon an viele Änderungen gewöhnen müssen.
    Ob uns die gepasst haben oder nicht, daran gewöhnt haben wir uns dennoch.


    Wie dem auch sei, man braucht ja noch nicht auf PHP 5.4 zu bauen, auch nicht unter wheezy. ;)

    Schöne Grüße aus der Lüneburger Heide!
    Thomas

  • Das lustige: Ich hab bis vor zwei Tagen noch nie Probleme gehabt von wegen Kompatibilität zu neuen PHP Versionen. Und vor zwei Tagen ist ein Script was schon zwei Jahre alt ist bei einer neuen Version abgeschmiert. Dementsprechend habe ich das Gefühl das ich mit "immer selbst neu schreiben" sehr gut gefahren bin.


    Weil grade "Noob-Schnipsel" aus den einschlägigen Portalen sind mit Code aus 1995 geschrieben und sorgen für den schlechten Ruf den PHP an einigen Stellen des Internets geniesst.