dedlfix: Umlaute

Beitrag lesen

echo $begrüßung;

[...] dann habe ich direkt nach dem Verbindungsaufbau nen Querry gesetzt $res=mysql_query("SET NAMES 'utf8'"); und es ging

Mit anderen Worten: Du sendest jetzt UTF-8-kodierte Daten und deklarierst das auch so, so dass das DBMS sie auch als solche interpretieren kann.

Und wie sind die String-Felder (Felder! Jedes einzeln. Tabellen- und Datenbankeinstellungen sind irrelevant) eingestellt? Haben die eine Kollationsangabe mit utf8 drin, so dass das MySQL die Daten auch ohne Verlust speichern kann? Anderenfalls fände eine Umkodierung in die für das jeweilige Feld konfigurierte Kodierung statt, die unter Umständen verlustbehaftet sein kann.

Nebenbei: Besser[1] als ein SET NAMES-Query wäre die Verwendung der Funktion mysql_set_charset(), wenn sie bei in deiner PHP-Version vorhanden ist.

[1] Vom Prinzip her richtiger, aber ohne Auswirkungen auf ISO-8859-x und UTF-8.

dann habe ich zum testen datensätze gespeichert und auf einer anderen Seite ausgegeben das ging auch doch als ich zum 9. Datensatz kam wollte ich testweise probieren in DEZIMAL Feldern statt dem . ein Komma zu setzen

Ein Komma geht gar nicht. Weder für den 9. noch für andere Datensätze. Das Dezimaltrennzeichen ist immer der Punkt. Ein Komma steht für die Trennung zwischen zwei Werten. Die Kodierung wird davon aber nicht beinflusst.

nachdem ich das gemacht hatte wurden die Umlaute der anderen(TEXT)Feldern nur noch als Fragezeichen in die Datenbank gespeichert.

Das DBMS ist eine Blackbox. Du kannst da nicht so einfach reinschauen. Du musst Daten stets abfragen. Dazu brauchst du eine Verbindung, auf der eine passende Kodierung ausgehandelt sein muss. Sonst gibt es Datenverlust, wenn MySQL die Daten aus der Feldkodierung in die Verbindungskodierung umkodiert. Weiterhin muss auch das Anzeigemedium über die Zeichenkodierung informiert werden.

Wenn du zum Kontrollieren den phpMyAdmin genommen hast, dann kannst du davon ausgehen, dass der alles richtig macht. Wenn der was Unerwünschtes anzeigt, dann sind die Daten in der Tabelle fehlerhaft.

Ich habe davor nichts am Charset verändert oder sonstwas gemacht. Hoffe ihr könnt mir helfen ich finde keinen Grund dafür.

Der Grund für die Fragezeichen kann eine Umkodierung sein, bei der in der Zielkodierung ein Zeichen nicht darstellbar ist, oder dass UTF-8 erwartet war und keine gültige UTF-8-Sequenz geschickt wurde. Das ? kann also bei Umkodierungen oder bei einer Datenübergabe ohne passend ausgehandelte Kodierung entstehen.

Helfen kann ich dir nur mit allgemeinen Hinweisen. Es sei denn, du kannst das Problem nachvollziehbar mit dem kleinstmöglichen Versuchsaufbau schildern oder darstellen, so dass man eventuell deinen Fehler erkennen kann.

Ansonsten kannst du nur peinlich genau darauf achten, dir bei jeglicher Datenverarbeitung diese Fragen zu stellen: Wo findet eine Datenübergabe statt? Ist der Empfänger über die verwendete Kodierung informiert? Sind die Daten dementsprechend kodiert? Kann ein verarbeitendes System mit der Kodierung umgehen? Nimmt es zum Zwecke der Verarbeitung oder Speicherung Umkodierungen vor? Sind dafür passende Kodierungen konfiguriert?

echo "$verabschiedung $name";