Sassl: html/php utf-8 header wird ignoriert

Hallo liebe Gemeinde!

Ich bin fast am Verzweifeln. Ich habe eine ganz einfacht html/php Seite erstellt, da ich in einem Projekt, welches ich neu angefangen habe ein Problem mit den Umlauten hatte.

<?php header('Content-type: text/html; charset=utf-8'); ?>
<!doctype html>
<html lang="de">
<head>
   <meta http-equiv="Content-Type" content="text/html" charset=utf-8" />
	 <title>Hanse-Bau-Team</title>
</head>
<body>
 	<div id="menu">
 		<ul>
 			<a href="#"><li>Home</li></a>
 			<a href="#"><li>öfters</li></a>
		</ul>
 	</div>
</body>
</html>

Leider werden mir die Umlaute im Browser nicht angezeigt, sondern die bekannten Sonderzeichen. Wie Ihr seht, habe ich nach Benutzung der Suchfunktion schon den php header eingefügt. Aber alles ohne Erfolg. Nun bin ich Ratlos und hoffe sehr auf Eure hilfe.

Getestet habe ich es mit Firefox und Edge.

Grüße und schonmal Danke für Eure Hilfe! Lars

  1. Hi,

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

    das ist kaputt - statt des " nach dem /html muß ein ; stehen.

    Ist die PHP-Datei tatsächlich UTF-8-codiert? Ein gelbes Auto wird ja auch nicht dadurch rot, daß man "rot" draufschreibt.

    cu,
    Andreas a/k/a MudGuard

    1. Hallo,

      ich habe den Fehler im Code korriegiert! Danke für den Hinweis. Deweil habe ich aber den Fehler glaub ich selber gefunden und zwar scheint mein Editor die Datei nicht in utf-8 speichern zu wollen, obwohl ich es in den Einstellungen eingestellt habe.

      Nach dem ich nun einen anderen Editor verwende, welcher diese Einstellung nicht ignoriert scheint es endlich zu funktionieren 😀

      Danke dennoch für die Hilfe!!!

    2. @@MudGuard

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

      das ist kaputt - statt des " nach dem /html muß ein ; stehen.

      Als „ganz“ würde ich das dann immer noch nicht bezeichnen. http-equiv="Content-Type" content="text/html" muss gar nicht dastehen; dafür ein " nach dem verbleibenden =.

      LLAP 🖖

      --
      „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
    3. Hallo Lars,

      Andreas schreibt:

      Ist die PHP-Datei tatsächlich UTF-8-codiert?

      Das ist etwas, das Du in deinem Editor tun musst. Da gibt es entweder irgendwo eine Einstellung zum Encoding, die Du pro Datei oder für ein Projekt setzt, oder Du hast im Speichern-Dialog eine Auswahlmöglichkeit. Das ist von Editor zu Editor sehr unterschiedlich.

      Wichtig: Du musst zwei mal kontrollieren, ob dir beim Umcodieren die Umlaute nicht kaputt gehen. Mit ist mit verschiedenen Editoren schon beides passiert.

      1. Nach dem Ändern des Encodings (falls es dafür eine eigene Funktion gibt)
      2. Nach dem Speichern im neuen Encoding. Schließe die Datei, lade sie neu und prüfe die Umlaute.

      Wenn Du dann mit deinem Projekt weitermachst und die Strings, die Du an den Client schickst oder vom Client bekommst, mit den String-Funktionen von PHP bearbeiten willst, dann denk dran, dass die "klassischen" Stringfunktionen nicht auf Multibyte-Zeichensätze wie UTF-8 ausgelegt sind. UTF-8 codiert alle Zeichen mit einem Code > 127 in 2 oder mehr Bytes, und die klassischen PHP Stringfunktionen operieren mit Bytes, nicht mit den variabel langen Bytegruppen, die ein Zeichen bilden. Statt dessen musst Du mit den mb...Funktionen arbeiten.

      Das muss dann auch beim Speichern in die Datenbank beachtet werden. Die Datenbank speichert Text normalerweise in ihrem eigenen Encoding, und wenn dein Programm UTF-8 Strings anlieferst, muss der Datenbanktreiber wissen, dass Du das tust. Dafür hat mysqli zum Beispiel die Methode set_charset. Bei Einsatz von Unicode im PHP Programm ist es dann auch ganz hilfreich, das Encoding der DB auf Unicode zu stellen, MySQL bietet dafür Möglichkeiten.

      Rolf

      --
      sumpsi - posui - clusi
      1. @@Rolf B

        dann denk dran, dass die "klassischen" Stringfunktionen nicht auf Multibyte-Zeichensätze wie UTF-8 ausgelegt sind.

        Du hast die Anführungszeichen falsch gesetzt: die klassischen „String“-Funktionen. 😉

        (Abgesehen davon hast du die falschen Anführungszeichen gesetzt.)

        LLAP 🖖

        --
        „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
  2. Hi,

    <?php header('Content-type: text/html; charset=utf-8'); ?>
    

    Und? Wird dieser Header gesendet? Prüf das bitte. MFG