MeCH: Validation

Hi, hab ein Problem mit der Vilidation meines html Codes.

Auf der w3c Seite bekomme ich immer den Fehler:
Either we do not support this character encoding ("default") yet,...

encoding ist also auf default eingestellt.

Im http-header steht:
Content-Type: text/html; charset=Default

Nun gebe ich aber in der HTML Datei als charset=utf-8 an, wird anscheinend aber trotzdem nicht genommen.

So sieht die HTML Daeit aus:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>LR - Events</title>
<link rel="stylesheet" href="css/style.css" type="text/css" media="screen" />
</head>

Hoffe mir kann wer helfen

mfg

  1. Either we do not support this character encoding ("default") yet,...

    Geht das noch weiter?

    1. Hier die ganze Fehlermeldung:
      A fatal error occurred when attempting to transcode the character encoding of the document. Either we do not support this character encoding ("default") yet, or you have specified a non-existent character encoding (often a misspelling).

      The error was: Encoding not supported.

      Wenn ich dann auf der W3C Seite bei encoding von "detect automatically" auf utf-9 umstelle, wird die Seite validiert, allerdings bekomme ich 2 Warnings:

      1.Warning Character Encoding Override in effect!

      The detected character encoding "default" has been suppressed and "utf-8" used instead.

      2.Warning Character Encoding mismatch!

      The character encoding specified in the HTTP header (default) is different from the value in the <meta> element (utf-8). I will use the value from the HTTP header (utf-8) for this validation.

  2. Hi!

    Nun gebe ich aber in der HTML Datei als charset=utf-8 an, wird anscheinend aber trotzdem nicht genommen.

    Du musst das angeben, was _du_ genommen hast, sprich: was du deinem Editor gesagt hast, welche Zeichenkodierung er beim Speichern verwenden soll. Ansonsten wäre das wie auf einen Briefumschlag was draufzuschreiben und zu hoffen, das sich dadurch der Inhalt anpasst.

    Lo!

    1. Hallo,

      die Zeile
      <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
      wird schon vom Editor erzeugt, dennoch scheint die validation immer auf den default Wert des http-headers zuzugreifen.

      1. Hi!

        die Zeile
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
        wird schon vom Editor erzeugt, dennoch scheint die validation immer auf den default Wert des http-headers zuzugreifen.

        "Scheint" ist bei Computerdingen immer ganz schlecht. Prüf nach, was wirklich ist. Nimm dazu die livehttpheaders-Extension für den Firefox oder irgendein Online-Tool, das dir die HTTP-Header anzeigt und schau die Zeile Content-Type aus der Response deines Servers an.

        Kannst du den Delinquenten, um den es geht, hier verlinken?

        Lo!

        1. Hab mir mal die phpinfo am server angeschaut, und dort steht beim http-header:
          Content-Type text/html; charset=Default

          Sollte durch den Wert default dann nicht auf das charset in der html datei zugegriffen werden?

          mfg

          1. Hi!

            Hab mir mal die phpinfo am server angeschaut, und dort steht beim http-header:
            Content-Type text/html; charset=Default

            Sollte durch den Wert default dann nicht auf das charset in der html datei zugegriffen werden?

            Nein. Entweder steht da eine Kodierungsangabe, oder der charset-Parameter fehlt ganz, dann wird als Ersatz die Angabe im Meta-Element verwendet.

            Lo!

            1. ok, aber wie kann ich mein Problem nun lösen?

              1. ok, aber wie kann ich mein Problem nun lösen?

                Bring den Webserver dazu, im HTTP-Head eine gültige Charset-Angabe zu machen.
                ("Default" ist *keine* gültige Charset-Angabe.)

                Für den Apachen geht das beispielsweise so:

                In der .htaccess:

                AddCharset UTF-8 .html .htm .php

                Siehe: http://httpd.apache.org/docs/2.0/mod/mod_mime.html#addcharset

                mfg Thomas

                1. Kann ich das auch ändern, wenn ich den Webserver nicht betreibe? Hab einfach ein Webspace dort.

                  mfg

                  1. Kann ich das auch ändern, wenn ich den Webserver nicht betreibe? Hab einfach ein Webspace dort.

                    Ich würde es einfach mal ausprobieren mit einer einfachen .htaccess-Datei in einem Unterverzeichnis.

                    Im schlimmsten Fall siehst Du, wenn Du versuchst, eine Seite aus diesem Verzeichnis per HTTP abzurufen, eine Fehlermeldung vom Typ "HTTP 500 Internal Server Error". Dann hast Du Pech gehabt, und der Betreiber des Servers hat in der httpd.conf festgelegt, dass Du gewisse Dinge nicht in der .htaccess regeln darfst.

                    So oder so würde ich den Betreiber des Servers informieren, dass eine Fehl-Konfiguration vorliegt; wie gesagt ist "Default" kein gültiger Wert für die Charset-Angabe.

                    mfg Thomas

                    1. Könntest du mir vielleicht kurz beschreiben, wie ich das mit der .htaccess Datei machen könnte. Einfach in die Datei "AddCharset UTF-8 .html .htm .php"
                       hineinschreiben, auf den server laden und aufrufen?

                      mfg

                      1. Könntest du mir vielleicht kurz beschreiben, wie ich das mit der .htaccess Datei machen könnte. Einfach in die Datei "AddCharset UTF-8 .html .htm .php"
                        hineinschreiben, auf den server laden und aufrufen?

                        Ja, fast. Die .htaccess selbst kannst Du über HTTP nicht aufrufen.
                        (Schutzmechanismus des Apache-Servers.)

                        Und Du willst ja sowieso wissen, wie die Charset-Angabe bei .html- oder .php-Dateien aussieht. Also musst Du noch eine solche Datei ins Verzeichnis legen, beispielsweise eine index.html.

                        Datei .htaccess
                        ---------------
                        AddCharset UTF-8 .html .htm .php

                        Datei index.html
                        ----------------
                        <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
                        <title>Test-Dokument</title>
                        <p>Hallo Welt

                        Dann die index.html über HTTP aufrufen, also http://www.example.com/verzeichnis/index.html im Browser oder mit einem HTTP-Head-Tool aufrufen, z.B. mit
                        http://cgi.w3.org/cgi-bin/headers

                        mfg Thomas

                        1. Danke für den Tip, ich kann leider keine .htaccess auf den server spielen.

                          Gibt es noch andere Möglichkeiten, um das Problem zu lösen?

                          mfg

                          1. Hi!

                            Danke für den Tip, ich kann leider keine .htaccess auf den server spielen.
                            Gibt es noch andere Möglichkeiten, um das Problem zu lösen?

                            header() verwenden. Das überschreibt in der Regel vom Server gesetzte Werte. Warum aber willst du nicht den Verantwortlichen auf den Fehler aufmerksam machen, auf dass er ihn beseitigen kann, und du nicht in jedem Script einen Workaround einbauen musst?

                            Lo!

                          2. Hi,

                            Danke für den Tip, ich kann leider keine .htaccess auf den server spielen.

                            Gibt es noch andere Möglichkeiten, um das Problem zu lösen?

                            *seufz*
                            https://forum.selfhtml.org/?t=196147&m=1313884

                            MfG ChrisB

                            --
                            “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
          2. Hallo,

            Hab mir mal die phpinfo am server angeschaut, und dort steht beim http-header:
            Content-Type text/html; charset=Default

            und welcher Wert wird im HTTP-Header *wirklich* übermittelt? Doch nicht etwa "default"?

            Sollte durch den Wert default dann nicht auf das charset in der html datei zugegriffen werden?

            Nein. Wenn wirklich "default" übermittelt wird, ist das ein Konfigurationsfehler beim Server. Da die Angabe im HTTP-Header aber in jedem Fall Vorrang hat, kannst du sie auch nicht durch eine gleichnamige meta-Angabe "überschreiben". Die meta-Angabe wird ignoriert, weil der HTTP-Header ja schon eine Information enthält (auch wenn sie Bullshit ist).

            Ciao,
             Martin

            --
            Vater Staat bringt uns noch alle unter Mutter Erde.
            1. Hab mir den Header ausgelesen:

              HTTP/1.1 200 OK Date: Tue, 16 Mar 2010 21:37:35 GMT Server: Apache/2.2.3 (Debian) PHP/5.2.0-8+etch16 mod_ssl/2.2.3 OpenSSL/0.9.8c mod_perl/2.0.2 Perl/v5.8.8 X-Powered-By: PHP/5.2.0-8+etch16 Content-Length: 3813 Connection: close Content-Type: text/html; charset=Default

              ist also tatsächlich so eingestellt.

              Kann man diesen Wert nun auch ändern, der Webserver ist ja nicht von mir, hab dort einfach nur mein Webspace?

              mfg

              1. Hi,

                Kann man diesen Wert nun auch ändern, der Webserver ist ja nicht von mir, hab dort einfach nur mein Webspace?

                Da die Angabe ja offenbar von PHP erzeugt wird, solltest du sie auch an der Stelle anpassen.

                Entweder, in dem du den Parameter default_charset anpasst, bspw. per .htaccess oder ini_set, oder in dem du die Angabe in jedem deiner Scripte durch einen entsprechenden Aufruf der Funktion header selber setzt.

                MfG ChrisB

                --
                “Whoever best describes the problem is the person most likely to solve the problem.” [Dan Roam]
          3. Hab mir mal die phpinfo am server angeschaut, und dort steht beim http-header:
            Content-Type text/html; charset=Default

            Das ist nicht ganz glaubhaft. Das ist also nicht dein Webspace, d.h. du nutzt einen kommerziellen Hoster?

            Ich suche auch die Angabe "http-header" Bei phpinfo() und finde sie nicht, wo steht die denn bei dir?
            Meinst du vielleicht unter 'HTTP Response Headers' die Angabe 'Content-Type'?
            Und da steht bei dir Default?
            Das ist soweit ich das sehe, eine ungültige Konfiguration. Was ich mir nicht vorstellen kann ist, das jemand dem du Geld zahlst, seinen Server so anbietet und dass du bei dieser Angabe nicht mal die Möglichkeit hast den falschen Wert zu ändern.

            Ist der Hoster dein kleiner Bruder oder sowas?

            Struppi.