Probleme mit dem Zeichensatz

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

  • Probleme mit dem Zeichensatz

    Hi. Ich möchte meine in der DB gespeicherten Texte mittels PHP ausgeben. Meine HTML-Datei sieht so aus:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <meta name="language" content="de" />
    ...

    Meine DB hat folgende Einstellungen:
    Language: German (de-utf-8)
    MySQL-Zeichensatz: UTF-8 Unicode (utf8)
    Zeichensatz / Kollation der MySQL-Verbindung: utf8_general_ci
    DB Kollation: utf8_unicode_ci

    Jetzt dachte ich, wenn das alles auf UTF8 ist, müßte ich mich nicht um die Sonderzeichen kümmern? Trotzdem zeigt der mir im Browser nur Müll bei den Umlauten an. Was geht da schief? htmlentities möchte ich nicht nutzen, weil Sonderzeichen wie < und > so erhalten bleiben sollen. Wenn ich alles durch utf8_encode jage klappts. Also muss da schon irgend etwas falsches von der DB kommen. Nur warum?

  • #2
    Re: Probleme mit dem Zeichensatz

    mysql_query('SET NAMES "utf8"');
    einmal nach mysql_connect

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Stimmt, hätte ich eigentlich noch dazu schreiben sollen. Damit funktioniert es in der Tat. Mich beschäftigt nur die Frage, ob das auch irgendwie ohne diese zusätzliche Query geht. Ist doch eigentlich Overhead, oder? Warum passen MySQL utf-8 und der Output nicht zusammen?

      /EDIT Weitere Frage. Ich verstehe es doch richtig, dass mit utf-8 Ausgabe die Umlaute / Sonderzeichen in jedem Fall korrekt angezeigt werden, so dass ich htmlentities() nicht mehr benötige?
      Zuletzt geändert von Ollli; 15.05.2006, 14:41.

      Kommentar


      • #4
        Original geschrieben von Ollli
        Stimmt, hätte ich eigentlich noch dazu schreiben sollen. Damit funktioniert es in der Tat. Mich beschäftigt nur die Frage, ob das auch irgendwie ohne diese zusätzliche Query geht. Ist doch eigentlich Overhead, oder? Warum passen MySQL utf-8 und der Output nicht zusammen?
        du kannst das irgendwo irgendwie in der mysql-config ändern, was auch wenn es möglich ist, zu bevorzugen ist ... wo musst du in der Manual suchen, das weiß ich nicht auswendig (und bitte, ein Query?! optimiere die anderen Queries mit EXPLAIN, das spart Resourcen...)

        /EDIT Weitere Frage. Ich verstehe es doch richtig, dass mit utf-8 Ausgabe die Umlaute / Sonderzeichen in jedem Fall korrekt angezeigt werden, so dass ich htmlentities() nicht mehr benötige?
        ich habe bis jetzt ohne keine Probleme fest gestellt, auch wenn ich sagen würde, dass es rein theoretisch mit htmlentities zu bevorzugen ist ... ich weiß nur nicht inwieweit koreanische, grieschiche, kyrillische oder sonstwas Zeichen in htmlentities codiert werden, und noch mehr, ob das dann noch richtig interpretiert wird von den Browsern....

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          Ich stecke schon mehr als genügend Aufwand in die Optimierung meiner Abfragen, das ist nicht das Problem. Aber genau aus diesem Grund versuche ich halt jeden unnötigen Schritt irgendwie auszumerzen, auch wenn der Zeitverlust dadurch nur im ms-Bereich liegt.

          Dass ich keine htmlentities verwenden will (kann) liegt eher daran, dass ich einige HTML Tags erlaube möchte. Die restlichen schneide ich mit striptags raus. Habe jetzt jedenfalls eh erstmal den SET NAMES Befehl eingebaut und werde mich dann demnächst mal genauer mit der Konfiguration meines MySQL Servers befassen.

          Danke für alle Antworten.

          Kommentar

          Lädt...
          X