Nach Serverwechsel werden UTF-8 definitierte DB-Felder komplett leer ausgegeben

eager2learn

New Member
Hallo an alle,

ich bin ganz neu hier und habe ein kurioses Problem. Auf meinem eigenen virtuellen Server habe ich eine PHP/MySQL Internetseite fertiggestellt. Alle Dateien sind utf-8 definiert, ebenso alle DB und textbasierten Felder. Zusätzlich ist utf-8 in der php.ini, httpd.conf und in der root-.htaccess Datei als Default festgelegt.
Auf dem Rechner läuft auch alles einwandfrei. Sonderzeichen werden im Browser korrekt ausgegeben und Eingaben in den CMS-Formularen auch ohne Probleme in die DB eingetragen.

Nun habe ich auf dem Rechner meines Kunden ebenfalls einen virtuellen Server eingerichtet und alle Einstellungen entsprechend übertragen. Alles läuft auch ohne Meckern, nur dass alle die Feldinhalte, die Sonderzeichen haben, nun komplett leer ausgegeben werden. Ich hätte ja noch verstanden, wenn kryptische Zeichen auftauchen, aber dass ganze Absätze verschluckt werden, das ist mir noch nicht untergekommen. Die Datensätze werden gefunden, und Spalten, die keine Sonderzeichen enthalten, werden ausgegeben.

Wenn ich übrigens versuchsweise htmlentities aus dem Code rausnehme, werden diese Inhalte mit Raute inkl. Fragezeichen angezeigt.
Mir ist auch aufgefallen, dass jetzt die Eingabe in die Formulare nicht mehr richtig läuft. Plötzlich werden die Sonderzeichen in der Datenbank kryptisch eingetragen. Diese werde dann allerdings im Browser wieder korrekt ausgegeben. Ich vermute, dass irgendwo noch ein Default-ISO versteckt ist. Aber in der httpd.conf und php.ini ist alles auf UTF-8 eingestellt. Wo könnte ich noch suchen?

Bin für jede Hilfe dankbar!
eager2learn
 
Ist das Problem auf die DB-Inhalte beschränkt? Gibt es ein PHP-Framework, mit dem Du gerarbeitet hast?

Was passiert, wenn Du ein

Code:
echo "öäüöß";

mal hartkodiert in eine PHP-Datei einfügst? Wir das korrekt angezeigt?

Sind die DB-Queries mit

Code:
set names 'utf8';

vorbereitet?
 
Hi dev,

ich nutze kein Framework. Wenn ich
PHP:
echo "äüöß";
versuche, werden die Zeichen mit Rauten und Fragezeichen ausgegeben.

Die DB ist durchweg utf-8 definiert. Wenn ich Daten abfrage, dann via:
PHP:
htmlentities($row["columnname"], ENT-QUOTES, UTF-8);

Das meintest Du aber nicht, oder? Sorry, in Bezug auf solche Dinge bin ich noch ein Anfänger...

Danke schon mal für die schnelle Antwort!
eager2learn
 
OK. ich hab

PHP:
mysql_query("SET NAMES utf8");

recherchiert und eingefügt und jetzt klappt alles. Ich frage mich allerdings, wo jetzt der Unterschied zu meinem ursprünglichen virtuellen Server liegt, die gleichen Installationspakete, die Configs alle durchgegangen und entsprechend angepasst. Mich macht diese Unberechenbarkeit immer irre.

Aber 1000 Dank! Wenigstens erfüllt es jetzt seinen Zweck. Dann hoffe ich nur, dass es beim Umzug auf den finalen Server nicht noch weitere Überraschungen diesbezüglich gibt...

e.
 
Wenn ich
PHP:
echo "äüöß";
versuche, werden die Zeichen mit Rauten und Fragezeichen ausgegeben.

Dann stimmt entweder Deine Dateikodierung oder das ausgegebene Charset vom Webserver nicht.

Ich frage mich allerdings, wo jetzt der Unterschied zu meinem ursprünglichen virtuellen Server liegt, die gleichen Installationspakete, die Configs alle durchgegangen und entsprechend angepasst. Mich macht diese Unberechenbarkeit immer irre.

Die Unberechenbarkeit ist der manuellen Installation geschuldet - Du hast da irgendwo etwas vergessen oder einen Fehler eingebaut oder was anders als beim 1. Mal gemacht.

Die Bash ist stark und mächtig -> schreib Dir Installationsskripte für die benötigten Dienste. Damit erreichst Du Konsistenz und Effizienz.
 
Back
Top