HTTP Header Default charset

Alles, was PHP betrifft, kann hier besprochen werden.

HTTP Header Default charset

Postby erbsli » 06. May 2020 22:27

Vor 8 Jahren hab ich mir ein Linux mit xampp aufgesetzt. Das ist jahrelang gut gegangen. Aber vor kurzem hab ich mir was neues gegönnt und dasselbe mit aktuellem Linux und xampp eingerichtet.
Vergleich: Aus PHP 5.4.7 wurde PHP 7.4.5, aus Apache 2.4.3 wurde Apache 2.4.43.
Im Prinzip funktioniert das neue gut, aber ein Haar hab ich in der Suppe doch gefunden. Ich zeig's an einem Beispiel.

Ich hab 2 Dateien angelegt, die eine heisst uml.html, die andere heisst uml.php. Der Inhalt ist aber bei beiden derselbe, nämlich

Code: Select all
<!DOCTYPE HTML>
<html>
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body style="font-family:Verdana,Helvetica,Arial;">
<h1>Bäh B&auml;h</h1>
</body>
</html>


Wenn ich uml.html mit dem Browser anschaue, sieht es bei beiden Systemen gut aus.
Wenn ich uml.php mit dem Browser auf dem alten xampp anschaue, sieht es gut aus. Wenn ich es auf dem neuen anschaue, wird der Umlaut nicht richtig dargestellt.
Genaueres Hinsehen zeigt folgenden Unterschied im HTTP-Header:
alt: 'Content-Type: text/html' bei beiden Dateien (HTML und PHP)
neu: 'Content-Type: text/html' für HTML, 'Content-Type: text/html; charset=UTF-8' für PHP. Das UTF-8 kommt wirklich von PHP. Mit .htaccess krieg ich das nicht in den Griff.

Wenn ich in der uml.php header() verwende, um den charset zu setzen, kommt es auch im neuen Setup gut. Also im Prinzip kein unüberwindliches Problem.

Aber ich frage mich nun: Warum verhält sich PHP 7 in dieser Sache anders als PHP 5?
Gibt es irgendwo einen Konfig-Parameter, wo ich den charset-Default für den HTTP-Header setzen kann?

Bin gespannt, ob mir jemand etwas darüber sagen kann, nachdem Google mir nicht weitergeholfen hat.
erbsli
 
Posts: 5
Joined: 07. April 2017 16:24
XAMPP version: 1.8.1
Operating System: Linux

Re: HTTP Header Default charset

Postby Altrea » 06. May 2020 22:33

Hier die Erklärung: https://www.php.net/manual/en/ini.core. ... lt-charset
Es ist immer gut zu wissen, in welcher Zeichenkodierung sein Dokument interpretiert wird, das ist insbesondere dann wichtig, wenn du nicht die volle Kontrolle über den Content hats (Zum Beispiel bei Benutzergenerierten Content, Kommentaren, Uploads, Formularen, etc). Es gibt ein paar fiese Angriffsszenarien die genau darauf abzielen die Zeichenkodierung eines Dokuments gezielt zu manipulieren um Filtermechanismen zu umgehen.

In der jetzigen Zeit gibt es meiner Meinung nach auch keine wirklich guten Gründe mehr dafür nicht UTF-8 zu verwenden.
We don't provide any support via personal channels like PM, email, Skype, TeamViewer!

It's like porn for programmers 8)
User avatar
Altrea
AF Moderator
 
Posts: 11926
Joined: 17. August 2009 13:05
XAMPP version: several
Operating System: Windows 11 Pro x64


Return to PHP

Who is online

Users browsing this forum: No registered users and 6 guests