Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Darstellung HTML-Entities mit htmlentities unter UTF-8

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Darstellung HTML-Entities mit htmlentities unter UTF-8

    Hallo,

    meine Seite läuft komplett unter UTF-8. Also header sendet UTF-8, im Meta ist es auch drinnen und mit Mysql läut es auch, alles soweit bestens, da ist auch nicht das Problem. Einzige sache ist, das meine Dateien nicht UTF-8 kodiert sind, aber dies macht keine Probleme, da ich sämtliche Sonderzeichen als html entitiy schreibe.

    In der Datenbank stehen UTF-8 kodierte Strings, die ich normal anzeigen lasse, dies klappt ganz gut.

    Nun möchte ich an einige Stellen Fehlermeldungen anzeigen lassen. Ich übergebe einen String an eine Funktion, der diese dann mit htmlentities anzeigt. Mit den Fehlermeldungen aus der Datenbank klappt dies wunderbar. Wenn ich von Hand aber selbst Fehlermeldungen im html Quelltext habe, beinhaltet diese html entities (für Sonderzeichen) und genau diese stellte htmlentities nicht richtig dar.

    PHP-Code:
    echo htmlentities("Der Römer ist Groß"ENT_QUOTES"UTF-8");
    echo 
    "<br />";
    echo 
    htmlentities(html_entity_decode("Der R&ouml;mer ist Gro&szlig;"ENT_QUOTES"UTF-8"), ENT_QUOTES"UTF-8"); 
    Während die erste Zeile die Daten nicht korrekt anzeigt, zeigt die zweite Zeile die Daten korrekt an.

    Kann es Probleme geben, wenn ich immer ein html_entity_decode da mit einbaue.

    Wie kann man das besser lösen? Oder muss ich meine Dateien auch utf-8 kodiert abspeichern?

    smila

  • #2
    Wenn die Daten, die zur Datenbank gehen UTF-8 sind, musst Du sie natürlich auch in UTF-8 abspeichern.

    Kommentar


    • #3
      Mit den Daten aus der Datenbank komme geht es wunderbar, diese Datensätze enthalten auch keine html Entities. Es geht nur nicht mit den Daten, die ich manuell in den Quellcode schreibe, welche Entities behalten. Vermutlich besteht das gleiche Problem, auch wenn kein UTF 8 im Spiel ist.

      Kommentar


      • #4
        Wieso willst du überhaupt htmlentities auf von dir in den Quelltext geschriebenen Text anwenden?
        [URL]http://hallophp.de[/URL]

        Kommentar


        • #5
          Wozu nutzt du bei UTF-8 htmlentities(). Warum nicht einfach htmlspecialchars()? Umlaute in UTF-8 zu maskieren ist Schwachfug.

          Beitrag editiert:
          […] Zu langsam
          Refining Linux: “[url=http://www.refining-linux.org/archives/65/Performing-push-backups-Part-1-rdiff-backup/]Performing Push Backups – Part 1: rdiff-backup[/url]”

          Kommentar


          • #6
            Wozu nutzt du bei UTF-8 htmlentities(). Warum nicht einfach htmlspecialchars()? Umlaute in UTF-8 zu maskieren ist Schwachfug.
            Ja eigentlich völlig recht, wenn ich htmlspecialchars nehme, erzielt es eigentlich den Zweck den ich bei der Anzeige möchte. Das sollte mein Problem lösen.

            Wenn ich dann meine Dokumente UTF-8 abgespeichert kriege, sollte alles bestens sein, aber dies soll nicht bestand dieser Disskussion sein.

            Besten Dank an alle.

            Kommentar


            • #7
              Zitat von Manko10 Beitrag anzeigen
              ...Umlaute in UTF-8 zu maskieren ist Schwachfug.
              Hallo zusammen!
              Ich beschäftige mich gerade mit derselben Problematik. Deshalb würde mich natürlich brennend interessieren warum es keinen Sinn macht Umlaute in UTF-8 zu maskieren.

              Für eure Hilfe und Erläuterungen recht herzlichen Dank!
              =)

              Kommentar


              • #8
                Zitat von Abweichler Beitrag anzeigen
                Deshalb würde mich natürlich brennend interessieren warum es keinen Sinn macht Umlaute in UTF-8 zu maskieren.
                Warum sollte es denn welchen „machen“?
                [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

                Kommentar


                • #9
                  aber dies soll nicht bestand dieser Disskussion sein.
                  Wieso nicht, wenn es das Problem löst und auch noch den state of the art darstellt?
                  Deshalb würde mich natürlich brennend interessieren warum es keinen Sinn macht Umlaute in UTF-8 zu maskieren.
                  Maskierung dient dazu Zeichen eines fremden Zeichensatzes darstellen zu können. Ein erweiterter Zeichensatz fasst 255 Zeichen, was in Deutschland bspw. nötige Umlaute wie üöä beinhaltet, in Schweden oder Griechenland eben Zeichen Ihres Sprachraums. Unicode (UTF-8 etc.) erweitert die verfügbare Zeichenmenge eines Zeichensatzes radikal, so dass man vereinfach sagen kann: Unicode enthält alle Zeichen der Welt.

                  [wiki]Unicode[/wiki]
                  [COLOR="#F5F5FF"]--[/COLOR]
                  [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                  [COLOR="#F5F5FF"]
                  --[/COLOR]

                  Kommentar


                  • #10
                    Zitat von ChrisB Beitrag anzeigen
                    Warum sollte es denn welchen „machen“?
                    Nun, bisher dachte ich, um Inhalt genauso auszugeben wie er ursprünglich erstellt wurde. Ich denke da gerade an die Probleme mit den Umlauten die man als Anfänger gerne hat.
                    Zitat von nikosch Beitrag anzeigen
                    ... Unicode (UTF-8 etc.) erweitert die verfügbare Zeichenmenge eines Zeichensatzes radikal, so dass man vereinfach sagen kann: Unicode enthält alle Zeichen der Welt.
                    Vielen Dank für die Ausführung inkl. Link. Wenn ich das also richtig verstanden habe, brauche ich vor einer Speicherung in die DB Umlaute im Text nicht durch ASCII-Code zu ersetzen, solange DB, Datenübermittlung (Script<->DB) und Ausgabe mit UTF-8 formatiert sind?

                    Oder wie ist das gemeint mit dem state of the art?

                    Kommentar


                    • #11
                      brauche ich vor einer Speicherung in die DB Umlaute im Text nicht durch ASCII-Code zu ersetzen
                      Das geht ja schon gar nicht. Selbstredend kann man mit Ascii (127 Zeichen) nicht alle Zeichen der Welt abbilden.
                      Falls Du Entities wie &uuml; meinstest - Auch hier gibt es nicht für alle Zeichen eine entsprechung als Code.

                      Im Prinzip kannst Du UTF-8 direkt in die Datenbank speichern und direkt in HTML ausgeben. Es gibt jedoch kontextbedingt bestimmte Sonderzeichen, die Du ersetzen musst: Kontextwechsel erkennen und behandeln
                      [COLOR="#F5F5FF"]--[/COLOR]
                      [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                      „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                      [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                      [COLOR="#F5F5FF"]
                      --[/COLOR]

                      Kommentar


                      • #12
                        Zitat von nikosch Beitrag anzeigen
                        Das geht ja schon gar nicht. Selbstredend kann man mit Ascii (127 Zeichen) nicht alle Zeichen der Welt abbilden.
                        Falls Du Entities wie &uuml; meinstest - Auch hier gibt es nicht für alle Zeichen eine entsprechung als Code.

                        Im Prinzip kannst Du UTF-8 direkt in die Datenbank speichern und direkt in HTML ausgeben. Es gibt jedoch kontextbedingt bestimmte Sonderzeichen, die Du ersetzen musst: Kontextwechsel erkennen und behandeln
                        Sorry, natürlich meinte ich Entities. (So ist das eben mit den Anfängern...)
                        Und Danke für den Link zum Artikel bezüglich "Kontextwechsel". Der Artikel ist für mich als Anfänger zwar nicht gerade einfach zu verstehen, dennoch hat er mir weitergeholfen.

                        Also:

                        Ich kann UTF-8 direkt in die Datenbank schreiben und muss nur bei Maskierungszeichen aufpassen, damit diese richtig eingelesen und ausgegeben werden. Habe ich das richtig verstanden?

                        Kommentar


                        • #13
                          muss nur bei Maskierungszeichen aufpassen, damit diese richtig eingelesen und ausgegeben werden. Habe ich das richtig verstanden?
                          Du musst beim Schreiben in die Datenbank/in die Ausgabe die jeweiligen Sonderzeichen des Kontextes (bei Ausgabe bspw. HTML) maskieren
                          [COLOR="#F5F5FF"]--[/COLOR]
                          [COLOR="Gray"][SIZE="6"][FONT="Georgia"][B]^^ O.O[/B][/FONT] [/SIZE]
                          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                          [URL="http://www.php.de/javascript-ajax-und-mehr/107400-draggable-sorttable-setattribute.html#post788799"][B]Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“[/B][/URL][/COLOR]
                          [COLOR="#F5F5FF"]
                          --[/COLOR]

                          Kommentar


                          • #14
                            Ok, jetzt ist die Sache klar. Vielen Dank!

                            Kommentar

                            Lädt...
                            X