HTML , PHP Umlaute falsch angezeigt in Unterseiten

unusual

Ensign
Registriert
Aug. 2016
Beiträge
244
Wie der Titel es sagt, werden die Umlaute in komischen Zeichen angezeigt. Woran könnte das liegen? mit UTF8 ist alles richtig oder?

<?PHP

if($_GET['id'] != '' && $_GET['id']!= 0)
$path = '?id='.$id;
else
$path = '';



?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />



</head>
 
UTF8 ist nur richtig, wenn der Text auch in UTF8 codiert ist. Ansonsten ist es natürlich falsch.
 
Je nach Servereinstellung musst du in PHP den Header noch setzen:
header('Content-Type: text/html; charset=utf-8');

Außerdem sollte dein Texteditor für die Inhalte auch auf UTF8 eingestellt sein. Edit: Wenn du dir unsicher bist, lade dir mal Notepad++ und schaue im Menü unter "Kodierung".
 
PHP:
header("Content-Type: text/html; charset=utf-8");

würde ich noch in PHP einwerfen.

Ansonsten natürlich schauen, dass das Dokument selbst auch in UTF8 gespeichert ist.

*Edit: wieder mal viel zu langsam. ;-)
 
Zuletzt bearbeitet:
Danke für die Antworten.. ich werde es gleich testen.

Wie mache ich es bei HTML, hier bei diesem Code:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
<meta http-equiv="content-type" content="text/html;charset=UTF-8">
<meta name="generator" content="Adobe GoLive 5">
<title>Eingabemaske für Termine</title>

</head>


kann ich über <head> ein <header> (utf8) </header> erstellen ?
Ergänzung ()

Ich habe es auf einer anderen Unterseite hinzugefügt:

<?PHP
include('lib.php');
header('Content-type: text/html; charset=utf-8');

function feedback()
{
global $counter;
global $xcheck;
$xtitel = 0;
$counter = 0;

if($_GET['tagungs_id'])
$tagungs_id = $_GET['tagungs_id'];

aber da tut sich nichts ^^
 
Wenn du es so machst:

PHP:
<?PHP
header('Content-type: text/html; charset=utf-8');
if($_GET['id'] != '' && $_GET['id']!= 0)
$path = '?id='.$id;
else
$path = '';
?>
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head> 
<body>
<h1>Eingabemaske für Termine</h1>
</body>
</html>
Ist das ü in der h1 Überschrift korrekt oder nicht?

Wenn du mit Datenbankinhalten arbeitest muss je nach Konfiguration die DB und/oder die DB Verbindung auch in UTF8 sein und die dort gespeicherten Texte ebenfalls.
 
unusual schrieb:
… kann ich über <head> ein <header> (utf8) </header> erstellen ?

Nein. <header> ist zudem ein HTML5 Element und passt nicht zu deinem Doctype. Außerdem gehört <header> in <body>.
 
Falls du mit Notepad++ arbeitest: Oben in der Leiste die Codierung auf "UTF8 ohne BOM" einstellen.
 
Hallo, ich wollte noch eine Info geben.

Wenn ich im Internet Browser, z.B. Chrome, bei der Codierung von UTF-8 auf Westeuropäisch (Windows-1252) gehe, dann werde die Umlaute alle richtig angezeigt.

Hilft mir oder euch das weiter? Ich finde den Fehler einfahc nicht.


Das Ding ist ja, dass nur alle verlinkte Seiten diesen Fehler haben. Sonst auf der ganzen Homepage wird alles korrekt angezeigt.
 
Was ist falsch phase5 zu benutzen?

@Einhörnchen, was genau soll ich da? Es hilft mir doch nicht weiter. Das Problem ist, dass die verlinkte Seiten den Inhalt der Tabelle falsch anzeigen.

Kann das Serverseitig liegen? Dass man dort die Umlaute richtig einstellen kann?
 
Der Server muss den Inhalt einfach im richtigen Encoding ausliefern. Also die php Datei als UTF-8 speichern, denn das ist in PHP ja der Inhalt selber.
Damit der Browser die Seite als UTF-8 ansieht, braucht er die Information über den "Content-Type" Header. Den kann man manuell einfügen oder das default-charset in der php.ini setzen. Der HTTP Header ist dabei wichtiger als das <meta charset=""> Tag. Der existiert vor allem aus historischen Gründen.
Der <meta http-equiv="Content-Type"> Krams ist die historische Version dieses historischen Tags. Den Browsern ist das alles egal, die machen da keine Unterschiede mehr (bzw. haben es nie gemacht).
 
Zurück
Oben