TomIRL: Dem Indianer die richtige Sprache erkennen lassen...

Moin,
Bekanntermaßen bin ich vor geraumer Zeit auf Linux umgestiegen.
Nach dem ich Suse in die Tonne geworfen habe, und mich mit Fedora Core4 angefreundet haben läufts eigentlich auch ganz gut.
Nun aber zu meinem Problem:
Ich habe lokal einen Apachen installiert dieser liefert die Webseiten immer default mit ISO-8859-1 aus, obwohl die Seiten utf-8 codiert sind und als solche auch gespeichert wurden.
<meta http-equiv="content-type" content="text/html; charset=UTF-8"> ist ebenfalls gesetzt.
Meine Webserver im Netzt tun auch alles wie es sein soll, nur eben der Lokale will nicht so wie ich will.

Die Frage lautet also; Wie kann ich dem Apachen beibringen, das er automatisch die Seiten mit der codierung erkennt die die Seiten tatsächlich haben?

Hier mal der Ausschnitt aus der httpd.conf
AddDefaultCharset ISO-8859-1
[....]

AddCharset ISO-8859-1  .iso8859-1  .latin1
AddCharset ISO-8859-2  .iso8859-2  .latin2 .cen
AddCharset ISO-8859-3  .iso8859-3  .latin3
[....]
AddCharset WINDOWS-1251 .cp-1251   .win-1251
AddCharset CP866       .cp866
AddCharset KOI8-r      .koi8-r .koi8-ru
AddCharset KOI8-ru     .koi8-uk .ua
AddCharset ISO-10646-UCS-2 .ucs2
AddCharset ISO-10646-UCS-4 .ucs4
AddCharset UTF-8       .utf8

Vielen Dank und viele Grüße
TomIRL

  1. echo $begrüßung;

    Die Frage lautet also; Wie kann ich dem Apachen beibringen, das er automatisch die Seiten mit der codierung erkennt die die Seiten tatsächlich haben?

    Es geht nicht. Es gibt generell keine hundertprozentig funktionierende Erkennungsmöglichkeit der verwendeten Kodierung (siehe dazu auch diesen Gesprächsfaden). Es sei denn, jemand schreibt ein dermaßen intelligentes Programm, dass anhand von Rechtschreibung und Analyse des Sinns und vielleicht noch weiteren Kriterien eine mehr oder weniger hohe Erkennungswahrscheinlichkeit erreicht.

    Die HTTP-Header-Angabe ist die maßgebliche. Die Meta-Tag-Angabe ist als Ersatz (http-equiv. equiv=Äquivalent) anzusehen, wenn kein HTTP-Header sich zur verwendeten Zeichenkodierung auslässt.

    echo "$verabschiedung $name";

  2. Guten Morgen!

    Ich habe lokal einen Apachen installiert dieser liefert die Webseiten immer default mit ISO-8859-1 aus, obwohl die Seiten utf-8 codiert sind und als solche auch gespeichert wurden.
    <meta http-equiv="content-type" content="text/html; charset=UTF-8"> ist ebenfalls gesetzt.

    Der Apache untersucht nicht den Inhalt der Webseiten, die er ausliefert. Du könntest das als Modul nachrüsten, dafür ist aber Selbermachen angesagt.

    Du kannst die Dateien auch mit entsprechenden Endungen versehen, index.html.utf-8 zum Beispiel. Verlinkst du allerdings nicht auf index.html.uft-8, sondern auf index.html in Kombination mit Multiviews (automatische Dateiauswahl durch den Server entsprechend der gemeldeten Fähigkeiten des Browsers), bekommst du möglicherweise Schwierigkeiten mit Browsern, die utf-8 nicht akzeptieren.

    Dein eigentliches Problem liegt aber hier:

    Hier mal der Ausschnitt aus der httpd.conf
    AddDefaultCharset ISO-8859-1

    Wenn alle deine Seiten in utf-8 kodiert sind, dann ersetze ISO-8859-1 durch UTF-8. Hast du einen Mischmasch, lösche oder kommentiere diese Zeile aus und füge überall meta-Zeilen ein, wie du es oben schon gezeigt hast. Der Server sendet dann gar keine Kodierungsangabe und die Browser können sich auf die meta-Angabe verlassen.

    Grüße, Moses