Tach!
Aber ich werde versuchen, im neuen Modul die Verbindungskodierung immer mitzugeben.
Schau mal, ob es da wirklich fehlt.
Da war nichts explizit gesetzt worden.
Es wird mit einer Klasse gearbeitet, daher bin ich mir ziemlich sicher, dass ich nicht nach allen Vorkommen von mysqli_connect suchen muss.
Dann bin ich mit meinem Latein am Ende. Da ist irgendwas, was mir grad nicht einfällt, was es sein könnte. Denn es passt nicht zusammen, wenn der Client UTF-8 sendet, MySQL aber Latin1 annimmt und der phpMyAdmin trotzdem die Umlaute richtig anzeigen kann.
$this->link=mysqli_connect(SQL_IP,SQL_USER,SQL_PWD,SQL_DATABASE) or die(db::error($this->link));
mysqli_query($this->link,"SET @@SESSION.sql_mode = ''") or die(db::error($this->link));
Jemanden sterben zu lassen, nur weil er mal einen Husten hat und den Besuchern einen ausführlichen Autopsiebericht zukommen zu lassen, der für sie gar nicht interessant ist, ist nicht gerde State-of-the-Art-Programmierung. Aber das nur nebenbei.
Ich habe die folgenden 2 Zeilen hinzugefügt, aber es hatte keinerlei Auswirkungen auf die Anzeige der Umlaute.
mysqli_query($this->link,"SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'") or die(db::error($this->link));
mysqli_set_charset($this->link,"utf8") or die(db::error($this->link));
Die erste Zeile ist nutzlos, weil alle Werte von der zweiten Zeile wieder überschrieben werden.
Und wenn es keine Auswirkungen hat, müsste eigentlich die Default-Kodierung bereits UTF-8 sein. Das passt dann aber nicht zu deinen alten Programmteilen.
Du kannst mal, ohne die Kodierung selbst zu setzen, SHOW VARIABLES LIKE 'char%' als Abfrage starten und dann das Ergebnis ganz normal fetchen und ausgeben:
~~~php
// ggf. $this->link anpassen und für $result und $row andere Namen nehmen, wenn sie mit vorhandenen kollidieren
$result = mysqli_query($this->link, "SHOW VARIABLES LIKE 'char%'");
while ($row = mysqli_fetch_assoc($result))
print_r($row);
Das mal direkt nach dem Verbindungsaufbau und einmal kurz vor (oder nach) der/einer Abfrage, die korrekte Daten anzeigt.
dedlfix.