eager2learn: utf-8 codierung von DB zum browser fehlerhaft

Beitrag lesen

Hi Lo!

ich hatte insbesondere Deine Beiträge zu dem Thema gelesen. In meinem Fall ist es so gewesen, dass ich testweise ein älteres Skript kopiert hatte, in dem htmlentities() eingebaut war. Erst später habe ich mich dann um die anderen Einstellungen gekümmert. Ich hatte die entsprechenden Angaben natürlich im Header:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Ich hatte die jeweiligen Einstellungen außerdem in der php.ini für PHP, in der httpd.conf für den Apache-Server und der my.cnf für MYSQL gesetzt.
Desweiteren hatte ich dann entsprechende Angaben in der .htaccess-Datei gemacht:

AddCharset UTF-8 .html .php

Und natürlich war UTF8 für die Datenbank, alle Tabellen und alle Textfelder definiert. Das bestätigte mir zum einen die Ausgabe der Variabeln in phpmyadmin als auch der Test via

mysql_query("SHOW VARIABLES LIKE 'c%'");

zur expliziten Datenbank-Connection. Alles war utf8.

Die Formulare waren für jene Browser, die es unterstützen noch zusätzlich ergänzt mit:

<form action="$PHP_SELF" method="post" enctype="multipart/form-data" accept-charset="utf-8">

Die Eingabe via Formular in Richtung Datenbank funktionierte dann auch einwandfrei, nur das Auslesen hat mich wahnsinnig gemacht. Irgenwann fiel mir dann htmlentities() auf, was ich sonst häufiger für flat-Databases genutzt habe. Als ich es versuchsweise entfernt habe, hat endlich alles einwandfrei geklappt.

Klar, für Quotes und andere Sonderzeichen, die escaped werden müssen, sollte man dann auf htmlspecialchars() zurückgreifen. Aber manchmal sieht man ja vor lauter Bäumen den Wald nicht mehr und deswegen erspart es vielleicht einigen das weitere Suchen...

Liebe Grüße
Sam