Codierung in PHP und HTML richtig einstellen
Hallo,
ich beschäftige mich gerade mit PHP/HTML/MySQL. Dafür habe ich eine kleine Linux/Apache-Testumgebung gebaut und eine kleine "Webseite" gebastelt. Meine Webseite liest einige Daten aus einer Tabelle in MySQL aus und schreibt diese über eine While-Schleife in eine Tabelle. Das funktioniert alles tadellos. Allerdings habe ich ein Problem mit der Darstellung bzw. der Codierung. Meiner Meinung nach habe ich an allen, mir bekannten, Stellen auf eine einheitlich Codierung geachtet (UTF-8). Die DB, sowie alle Tabellen sind mit UTF_general_ci erstellt worden.
Allerdings werden Daten mit umlauten aus der DB nicht korrekt angezeigt:
1) So sieht die Ausgabe der Daten im Browser aus. Die Überschrift "Straße" wird richtig angezeigt...die einzelen Angaben dazu nicht.
2) So sieht die Tabelle in MySQL-Workbench aus
3) Wenn ich die Codierung im Browser von UTF-8 auf Westeuropäisch (ISO) stelle, dann kommen die Daten zwar richtig "raus" aber die Überschriften sind aufeinmal falsch.
4) So sieht der Seitenquelltext aus...das charset ist auch hier auf UTF8....
Ich kann den Fehler nicht finden, kann mir einer von euch helfen??
ich beschäftige mich gerade mit PHP/HTML/MySQL. Dafür habe ich eine kleine Linux/Apache-Testumgebung gebaut und eine kleine "Webseite" gebastelt. Meine Webseite liest einige Daten aus einer Tabelle in MySQL aus und schreibt diese über eine While-Schleife in eine Tabelle. Das funktioniert alles tadellos. Allerdings habe ich ein Problem mit der Darstellung bzw. der Codierung. Meiner Meinung nach habe ich an allen, mir bekannten, Stellen auf eine einheitlich Codierung geachtet (UTF-8). Die DB, sowie alle Tabellen sind mit UTF_general_ci erstellt worden.
Allerdings werden Daten mit umlauten aus der DB nicht korrekt angezeigt:
1) So sieht die Ausgabe der Daten im Browser aus. Die Überschrift "Straße" wird richtig angezeigt...die einzelen Angaben dazu nicht.
2) So sieht die Tabelle in MySQL-Workbench aus
3) Wenn ich die Codierung im Browser von UTF-8 auf Westeuropäisch (ISO) stelle, dann kommen die Daten zwar richtig "raus" aber die Überschriften sind aufeinmal falsch.
4) So sieht der Seitenquelltext aus...das charset ist auch hier auf UTF8....
Ich kann den Fehler nicht finden, kann mir einer von euch helfen??
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 266862
Url: https://administrator.de/contentid/266862
Ausgedruckt am: 26.11.2024 um 03:11 Uhr
5 Kommentare
Neuester Kommentar
Yup, die Datenbankverbindung würde mich auch interessieren
Beispiel mit PDO
Gruß jodel32
Beispiel mit PDO
function connect_db(){
$DB_HOST = '127.0.0.1';
$DB_NAME = 'test_db';
$DB_USER = 'root';
$DB_PASSWORD = 'geheim';
$db = new PDO('mysql:host='.$DB_HOST .';dbname='.$DB_NAME.';charset=utf8', $DB_USER, $DB_PASSWORD,array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
return $db;
}
z.B. mit PDO so
dbconnect.php
ausgabe.php
dbconnect.php
<?php
define ('MYSQL_HOST','XX' );
define ('MYSQL_BENUTZER','XX' );
define ('MYSQL_KENNWORT','XX' );
function connect_db($DB_NAME)
{
$db = new PDO('mysql:host='.$MYSQL_HOST.';dbname='.$DB_NAME.';charset=utf8', $MYSQL_BENUTZER, $MYSQL_KENNWORT,array(PDO::ATTR_EMULATE_PREPARES => false, PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
return $db;
}
?>
ausgabe.php
<?php
include ("dbconnect.php");
Try{
$db_link = connect_db("NameDerDatenbank");
$sql = "Select * From Tabelle";
foreach ($db_link->query($sql) as $row) {
//....
}
}catch (PDOException $ex){
echo "Es ist ein Fehler beim Datenbankabruf aufgetreten: " . $ex;
}
?>