Johannes Herta: utf8 - zeichenkodierung

Hallo,

habe eine Frage zu den zeichenkodierungen: will eine Homepage in mehreren Srachen anbieten.
jetzt habe ich die Russische Version hochgeladen und die html datein mit dem editor utf8 kodiert. der einzige unterschied zur deutschen version ist, dass ich im meta tag ein anderes charset angegeben hab (hat mit iso 8859 5 nicht funktioniert - muss ich noch auf utf8 umstellen).
jetzt meine frage: wenn ein russe meine hp besucht - hat er automatisch   seinen browser auf utf 8 eingestellt? warum kann ich russische web seiten bzw kyrillische buchstaben im web ansehen mit einer lateinischen codierung aber auf meiner hp nicht?

link: www.dressur-fohlen.at

mfg Johannes

  1. jetzt habe ich die russische Version hochgeladen und die html-dateien mit dem editor utf8-kodiert. der einzige unterschied zur deutschen version ist, dass ich im meta-tag ein anderes charset angegeben hab (hat mit iso-8859-5 nicht funktioniert - muss ich noch auf utf-8 umstellen).

    Den Satz verstehe ich nicht ganz. Wenn du den Text utf-8-kodiert speicherst, dann darf in der Zeichensatzangabe weder iso-8859-5, noch irgendwas "anderes" stehen, sondern einzig "utf-8".

    jetzt meine frage: wenn ein russe meine hp besucht - hat er automatisch seinen browser auf utf-8 eingestellt?

    Genau dafür ist ist die charset-Angabe gedacht. Alleine an den Bytes, die der Browser bekommt, kann er nicht erkennen, welcher Wert welchem Schriftzeichen entsprechen soll. Ein Byte hat immer einen Wert im Bereich von 0 bis 255, welches Zeichen dafür auf den Bildschirm gepinselt werden soll, steht im Zeichensatz.

    warum kann ich russische webseiten bzw. kyrillische buchstaben im web ansehen

    Weil der Server dort den richtigen Zeichensatz mitteilt.

    mit einer lateinischen codierung aber auf meiner hp nicht?

    Weil du in deinen Seiten (wie zum Beispiel http://www.dressur-fohlen.at/russisch/links/zuchtstuten/zuchtstuten.html, eine utf-8-kodierte Datei)

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">

    stehen hast, also den falschen Zeichensatz. Wenn da iso-8859-1 drin steht, dann verwendet der Browser auch die iso-8859-1-Tabelle, um die Bytes zu dekodieren - bei einer eigentlich anders kodierten Datei ist das Ergebnis dann logischerweise Bockmist.

    1. vielen dank für eine antwort, i know: ich hab ziemlich herum gemisch mit den codierungen.
      was ist denn zu empfehlen?
      soll ich besser ins charset einheitlich utf8 oder die iso-8859-5 kodierung verwenden (unter der Voraussetzung , dass ich s auch als solches abspeicher:) )
      lg

      1. echo $begrüßung;

        vielen dank für eine antwort, i know: ich hab ziemlich herum gemisch mit den codierungen.
        was ist denn zu empfehlen?

        Unicode wurde entwickelt, weil es zwar bisher viele Zeichensätze gab, sie jedoch jeweils immer nur Teile der Gesamtheit der existierenden Schriftzeichen abbilden konnten. Unicode hat derzeit mehr Platz als Zeichen bekannt sind. Es wäre also das Klügste, Unicode zu verwenden, um mit diesem einen Zeichensatz alles abdecken zu können, was derzeit in deinem Webprojekt vorhanden ist, und das was vielleicht in Zukunft noch hinzukommt. Und da UTF-8 die gängigste Kodierung von Unicode ist, kann ich dir nur UTF-8 als Kodierung empfehlen.

        echo "$verabschiedung $name";

      2. was ist denn zu empfehlen?
        soll ich besser ins charset einheitlich utf8 oder die iso-8859-5-kodierung verwenden

        dedlfix hat das schon ausgeführt, nur als Ergänzung: Da du auf einigen Seiten, wie auch der genannten, sowohl kyrillische als auch deutsche Zeichen benutzt, wirst du schon halbwegs zwangsweise um Unicode bzw. utf-8 nicht herumkommen, denn das ist die einzigste Variante, in der alle Schriftzeichen gleichzeitig verwendbar sind.
        Eine Alternative wäre nur, beim kyrillischen iso-8859-5 zum Beispiel das ö als &ouml; zu maskieren. iso-8859-5 hat aber keine technischen Vorteile gegenüber utf-8 (zumal ich mich zu entsinnen meine, dass im russischem Sprachraum koi-8 breite Anwendung fand, weniger die iso-Tabelle), außerdem kannst du beim Gemisch aus 8-Bit-Zeichensatz und HTML-Masken nicht einfach drauflos tippen.

        Die Verwendung von utf-8 in Webseiten ist in unseren Breiten meistens eher eine Geschmacksfrage denn eine Notwendigkeit; in deinem Fall wäre es jedoch geradezu ein Frevel, nicht Unicode einzusetzen, denn genau für sowas ist Unicode prädestiniert.

    2. Hello out there!

      Alleine an den Bytes, die der Browser bekommt, kann er nicht erkennen, welcher Wert welchem Schriftzeichen entsprechen soll. Ein Byte hat immer einen Wert im Bereich von 0 bis 255, welches Zeichen dafür auf den Bildschirm gepinselt werden soll, steht im Zeichensatz.

      Nö. Aus den Bytes – nennen wir sie besser Oktetts – wird anhand der Zeichen_codierung_ erstmal die Position im Zeichensatz ermittelt. So wird bspw. aus der Oktettfolge C3 A4 bei UTF-8-Codierung die Position 228 (hexadezimal E4) [Wikipedia: UTF-8].

      Danach wird aus dieser Position aus dem Zeichen_satz_ (der bei HTML _immer_ UCS/Unicode ist) das entsprechende Zeichen herausgesucht, im obigen Beispiel also U+00E4 'ä'.

      Weil der Server dort den richtigen Zeichensatz mitteilt.

      Nö, sondern die Zeichen_codierung_. Die Verwechslung der beiden Begriffe führt immer wieder zu Unklarheiten. Besser ist es, sie sorgfältig zu trennen.

      Und ja, die Verwechslung führte auch dazu, dass es im HTTP 'charset' heißt: <meta http-equiv="Content-Type" content="text/html; charset=utf-8">. In der XML-Deklaration heißt es richtigerweise 'encoding': <?xml encoding="utf-8"?>.

      See ya up the road,
      Gunnar

      --
      „Wer Gründe anhört, kommt in Gefahr nachzugeben.“ (Goethe)