Der Apache-Webserver scheint UTF-8 WIRKLICH nicht zu mögen

Der Apache-Webserver scheint UTF-8 WIRKLICH nicht zu mögen

Das nervt mich wirklich, also hoffe ich, dass mir hier jemand sagen kann, was ich falsch mache. Ich betreibe seit einiger Zeit einen Apache-Webserver auf meinem Windows 7-Laptop, um einige Programme zu testen, die ich in meiner Freizeit mache. Vor kurzem ist mir aufgefallen, dass Unicode-Zeichen auf meinen Seiten in meinem Browser nicht richtig angezeigt werden. Ich habe viele Tests durchgeführt, die sich als sinnlos herausstellten, und festgestellt, dass die Zeichen tatsächlich als korrektes UTF-8 gesendet wurden. Außerdem habe ich <meta http-equiv="Content-Type" content="text/html; charset=utf-8">oben in meiner HTML-Ausgabe eine Zeile hinzugefügt, die das Problem beheben sollte, aber eigentlich nichts bewirkt hat. Dann habe ich mir die Zeit genommen, die HTTP-Antwortheader zu überprüfen, und gesehen, dass Apache Folgendes zurücksendet:

HTTP/1.1 200 OK
Datum: So, 19. Juli 2015 18:18:40 GMT
Server: Apache/2.2.25 (Win32)
Übertragungskodierung: chunked
Inhaltstyp: text/html; Zeichensatz=iso-8859-1

OK, das scheint also ein ziemlich einfaches Problem zu sein. Laut Internet kann ich das beheben, indem ich AddDefaultCharset utf-8meiner httpd.conf-Datei etwas hinzufüge. AddDefaultCharsetDa die Datei nirgends Zeilen enthielt, habe ich sie unten genau so hinzugefügt, wie sie oben geschrieben ist. Dann habe ich den Apache-Dienst neu gestartet und festgestellt, dass das Problem unverändert war. Also habe ich meinen Computer neu gestartet, in der Annahme, dass ich vielleicht nicht weiß, wie man Apache richtig neu startet, aber er zeigt die Zeichen immer noch nicht richtig an und sendet immer noch charset=iso-8859-1die Header.

Ich habe auch eine Website gefunden, die darauf hindeutet, dass etwas namens Windows VirtualStore die Konfigurationsdatei automatisch woanders speichert, nur um mich zu ärgern, aber ich glaube nicht, dass das passiert, weil ich keine Apache-Dateien im VirtualStore-Verzeichnis finden kann. Außerdem soll man VirtualStore deaktivieren können, indem man den Besitz des Ordners übernimmt, und das habe ich vor einiger Zeit getan, weil ich sonst nichts ändern konnte.

Leider bin ich mir nicht einmal sicher, was ich bei diesem Problem sonst noch beachten sollte. Hat jemand eine Idee?

Antwort1

Versuchen Sie, eine dreizeilige HTML-Datei zu erstellen, fordern Sie sie vom Browser an und überprüfen Sie den Header. Dadurch wird sichergestellt, dass keine CGI-Header oder andere Elemente vorhanden sind, die Ihre Serverkonfiguration beeinträchtigen.

<html><head><title>Some Test file</title></head>
<body>unicode test äöüÄÖÜß</body>
</html>

Spielen Sie weiter mit Ihrer Serverkonfiguration, bis diese Datei mit einer charset=utf-8Spezifikation im Content-Type-Header gesendet wird.

Versuchen Sie als nächstes ein minimales Perl-Programm:

#!/usr/bin/perl   <-- or omit this line as you're on windows
binmode(STDOUT, ":utf8");
print qq(Content-type: text/html; charset=utf-8

<html><head><title>Some Test file</title></head>
<body>unicode test äöüÄÖÜß</body>
</html>
);

Wenn dies funktioniert (den richtigen Header sendet), liegt alles andere, was nicht funktioniert, an Ihren Bibliotheken und nicht an Ihrer Serverkonfiguration.

verwandte Informationen