Hallo Leute, all meine Seiten sind folgendermaßen aufgebaut:
Außerdem habe ich mittels notepad++ bereits den SQLDump auf die korrekten Umlaute gesetzt.
Zu guter letzt habe ich über die Datenbank folgendes Script laufen lassen. Es wurde korrekt ausgeführt:
Nichts desto trotz werden mittels PHP generierte Links die deutschen Umlaute durch ein � dargestellt. Wie kann das sein?Was fehlt denn noch, um die Umlaute korrekt darzustellen?
HTML:
<!Doctype html> <!-- Definition des doctype-Modus -->
<html> <!-- Definition des Stammverzeichnises -->
<head> <!-- Definition des Kopfbereiches -->
<meta charset="utf-8"> <!-- charset[utf-8:] definiert den deutschen Zeichensatz -->
<title> Votum </title> <!-- weist dem HTML-Dokument in der Registerkarte einen Namen zu -->
<!-- Hier ggf. CSS-Link einfügen, z.B.: <link href="css/selektoren.css" rel="stylesheet"> -->
<style></style> <!-- hier ggf. CSS direkt einfügen -->
</head>
<body>
</body>
</html>
Zu guter letzt habe ich über die Datenbank folgendes Script laufen lassen. Es wurde korrekt ausgeführt:
PHP:
<?php
$user = "root";
$pw = "";
$databasetyp = "mysql";
$hostname = "localhost";
$databasename = "votum";
try {
//instanziere ein Objekt der Klasse PDO gemäß den Parametern des Konstruktors
$dbh = new PDO("$databasetyp:host=$hostname;dbname=$databasename;charset=utf8", $user, $pw, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
echo"<h3>MySQL-Datenbank wurde soeben initialisiert...</h3>";
echo"<p><font size='5'>Bitte ganz nach unten scrollen um die Zusammenfassung zu lesen!</font>";
} catch (PDOException $e) {
print "<h3><center>Error!: " . $e->getMessage() . "<br></h3></center>";
echo"<p><font size='5'>ERROR!!!Keine Verbindung zur Datenbank möglich. Bitte überprüfen Sie folgende Verbindungsparameter:<br>
Benutzer:$user<br>Datenbanktypus:$databasetyp<br>Server:$hostname<br>Datenbank:$databasename<br>Passwort:";
if ($pw == "")
echo "keines</p>";
else
echo $pw . "</p>";
exit();
}
$sql0 = "ALTER DATABASE $databasename DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci";
$dbh->query($sql0);
$sql1 = "SET FOREIGN_KEY_CHECKS=0"; //setzt die referenzielle Integrität außer Kraft
$dbh->query($sql1);
$sql = "SHOW TABLES";
$treffer = $dbh->query($sql);
$x = 0;
foreach ($treffer as $daten) {
$sql2 = "ALTER TABLE $daten[0] CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci";
$dbh->query($sql2);
$x++;
echo"<p><font color='red'>" . $daten[0] . "</font> wurde soeben auf den richtigen Zeichensatz umgestellt<br>";
}
$sql3 = "SET FOREIGN_KEY_CHECKS=1"; //reaktiviert die referenzielle Integrität
$dbh->query($sql3);
echo"<p><font size='5'><font color='blue'>Die Datenbank $databasename wurde auf den richtigen Zeichenssatz umgestellt<br>";
echo"<p>Es wurden insgesamt $x Tabellen auf den deutschen Zeichensatz utf8_general_ci umgestellt. Umlaute sind jetzt kein Problem mehr!</font>";
?>
Nichts desto trotz werden mittels PHP generierte Links die deutschen Umlaute durch ein � dargestellt. Wie kann das sein?Was fehlt denn noch, um die Umlaute korrekt darzustellen?
Zuletzt bearbeitet: