php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Charset in HTML, PHP oder htaccess?


 
Truncate
11-09-2018, 19:34 
 
Hallo,

ich habe einfach in meine .htaccess diese Zeile mit eingefügt:

AddDefaultCharset UTF-8

Die PHP-Dateien selbst sind alle in UTF8.

Muss ich jetzt zusätzlich trotzdem noch per PHP einen Header senden?

Und ist diese Zeile im HTML dann auch noch nötig?

<meta http-equiv="content-type" content="text/html; charset=utf-8">

Der Server schickt ja bereits jetzt schon dies zurück:

Content-Type: text/html; charset=UTF-8

Danke!

 
h3ll
11-09-2018, 20:45 
 
Nein, wenn der Server charset=UTF-8 schickt, dann reicht das für den Browser.

 
Truncate
11-09-2018, 21:41 
 
Und wie erkennt er den Content-Type?

Meta: "content-type" content="text/html

Ich generiere ja jeglichen Output mittels einer index.php und die schickt ja keine Endung .htm(l) raus...

 
h3ll
11-09-2018, 23:11 
 
Und wie erkennt er den Content-Type?

Anhand des Content-Type im HTTP-Header.

 
Truncate
12-09-2018, 21:17 
 
Anhand des Content-Type im HTTP-Header.

Ja aber ich geb doch mittels PHP keinen Header aus?!

Die index.php könnte ja auch ein Image ausgeben mit entsprechendem Header, wieso schlussfolgert er bei fehlendem Header das es text/html sein muss?

Es steht ja lediglich <html> im Anfang der Ausgabe, kein weiteres Meta-Tag etc.

 
h3ll
12-09-2018, 22:38 
 
Ja aber ich geb doch mittels PHP keinen Header aus?!

Wenn du mit PHP keinen ausgibst, dann macht das der Webserver für dich. Ich würde allerdings immer selber die Kontrolle in die Hand nehmen und nicht auf eine zufällig passende Einstellung des Webservers vertrauen.

Die index.php könnte ja auch ein Image ausgeben mit entsprechendem Header, wieso schlussfolgert er bei fehlendem Header das es text/html sein muss?

Tja, dann landet im Browser ein Zeichenmüll, weil er glaubt, dass der Server HTML ausliefert, aber unerwartet Binärdaten kommen. Denn der Webserver sendet standardmäßig den Content-Type für HTML. Manchmal erkennt der Browser trotzdem die Bilddaten und zeigt sie richtig an, aber ich würde mich auch nicht darauf verlassen, dass der Browser solche Fehler selber erkennt und automatisch behebt.

Zum Beispiel:
<?php

readfile('test.png');
Ausgabe bei Firefox:
http://666kb.com/i/dwwjalr90p9djgcps.png

- -

Alle Zeitangaben in WEZ +2. Es ist jetzt 16:02 Uhr.