Lars: Unicode-Zeichen korrekt darstellen

Hallo ihr,

Ich stehe vor dem Problem, dass eine bestimmte Serveranwendung eine Webseite generiert bzw. deren Inhalt und das unter anderem auch in Japanisch oder anderen beliebigen Sprachen.

Ich bin eigentlich der Meinung, diese Unicode Zeichen können direkt in der HTML Datei auftauchen und werden auch korrekt angezeigt, wenn ich im Header auf UTF-8 stelle:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

Und damit hat es sich. Oder liege ich völlig falsch?

Grüße
Lars

  1. hi,

    Ich bin eigentlich der Meinung, diese Unicode Zeichen können direkt in der HTML Datei auftauchen und werden auch korrekt angezeigt, wenn ich im Header auf UTF-8 stelle:

    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

    Und damit hat es sich. Oder liege ich völlig falsch?

    Der Webserver liefert die Ressource idR. bereits mit einer Charset-Angabe im Content-Type-Header aus, und diese Angabe hat Vorrang vor einer erst in HTML gemachten.
    Überprüfen, welche Angabe dein Server macht, kannst du bspw. mit http://web-sniffer.net/ (für Seiten im www), oder mit einer Browser-Extension, die dir die Header anzeigt.
    Falls diese nicht stimmt, korrigiere sie oder lasse sie korrigeren. Schau dazu ins Handbuch deines Webservers, oder wende dich an den Admin.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hey,

      nee es geht da nicht um einen Webserver - das ist eine spezielle Anwendung, die ihre Daten in HTML-Dokumenten rausschickt. Aufgerufen wird diese dann per Webadresse und Angabe des verwendeten Ports. Der Header der generierten HTML-Dokumente ist direkt im Quellcode des Programms festgelegt worden, und enthält bereits die Festlegung auf UTF-8 Kodierung.

      Frage war jetzt nur, ob das bereits ausreicht, Unicode-Zeichen überall korrekt darstellen zu können, und ob man diese Unicodes dann ohne weiteren im Klartext in den HTML Code schreiben kann.

      Ich interpretiere deine Antwort mal als ja... falls nicht, korrigier mich bitte ;-)

      Grüße
      Lars

      1. hi,

        nee es geht da nicht um einen Webserver - das ist eine spezielle Anwendung, die ihre Daten in HTML-Dokumenten rausschickt. Aufgerufen wird diese dann per Webadresse und Angabe des verwendeten Ports.

        Und wer steckt hinter dieser Webadresse?
        Welches Protokoll wird verwendet - HTTP ode rein anderes?

        Frage war jetzt nur, ob das bereits ausreicht, Unicode-Zeichen überall korrekt darstellen zu können, und ob man diese Unicodes dann ohne weiteren im Klartext in den HTML Code schreiben kann.

        Und die Antwort war: Kommt drauf an, bei Auslieferung über HTTP und direkte Anzeige in einem Browser eher Nein.

        Ich interpretiere deine Antwort mal als ja... falls nicht, korrigier mich bitte ;-)

        Done.

        gruß,
        wahsaga

        --
        /voodoo.css:
        #GeorgeWBush { position:absolute; bottom:-6ft; }
        1. Okay - mir ist da grad noch etwas anderes eingefallen:

          Man benötigt 2 Byte, um ein Unicode-Zeichen darstellen zu können, jedoch nur 1 Byte, um ein ASCII Zeichen darzustellen. Wenn in einer HTML-Seite nun beides gemischt ist - woher soll der Browser dann wissen, was er wie darzustellen hat?

          Oder ist die Angabe des Zeichensatzes im HTML-Header für den Webserver und der bereitet die Seite bereits in UTF-8 auf?

          Grüße
          Lars

          1. hi,

            Man benötigt 2 Byte, um ein Unicode-Zeichen darstellen zu können, jedoch nur 1 Byte, um ein ASCII Zeichen darzustellen. Wenn in einer HTML-Seite nun beides gemischt ist - woher soll der Browser dann wissen, was er wie darzustellen hat?

            Jetzt wird's vielleicht mal Zeit, dass du dich erst mal über die Thematik informierst. http://de.wikipedia.org/wiki/UTF-8#Kodierung

            Oder ist die Angabe des Zeichensatzes im HTML-Header für den Webserver und der bereitet die Seite bereits in UTF-8 auf?

            Nein, das ist vollkommener Quark.

            gruß,
            wahsaga

            --
            /voodoo.css:
            #GeorgeWBush { position:absolute; bottom:-6ft; }
          2. Moin!

            Man benötigt 2 Byte, um ein Unicode-Zeichen darstellen zu können

            Das ist falsch! Unicode umfaßt den Wertebereich von U+000000 bis U+10FFFF, also insgesamt 1.114.112 verschiedene Zeichen. Diese lassen sich nicht mit 2 Bytes (= 16 Bit) codieren, sondern erfordern mindestens 21 Bit. Da 21 Bit mit existierenden Rechnern nicht verarbeitet werden können, wären mindestens 24 Bit (=3 Byte) erforderlich. Da 3 Byte für den Speicherzugriff von 32-Bit-Prozessoren äußerst krumm sind, werden durchaus auch 32 Bit (=4 Byte) für die Zeichendarstellung verwendet.

            jedoch nur 1 Byte, um ein ASCII Zeichen darzustellen.

            Es gibt keine Gleichzeitigkeit von "Unicode" und "ASCII". Ein Textstring ist entweder in der einen Codierung, oder in der anderen.

            Dass gleiche Bytewerte in zwei verschiedenen Codierungen das gleiche Zeichen meinen, ist zwar durchaus Absicht der Hersteller, aber im Prinzip nur als zufällig anzusehen. Keinesfalls sollte es dazu verleiten, auf die Angabe der verwendeten Codierung zu verzichten!

            Wenn in einer HTML-Seite nun beides gemischt ist - woher soll der Browser dann wissen, was er wie darzustellen hat?

            Wie gesagt: Eine HTML-Seite hat genau EINE Codierung, die von vorn bis hinten gilt. Mischen gibts nicht.

            Oder ist die Angabe des Zeichensatzes im HTML-Header für den Webserver und der bereitet die Seite bereits in UTF-8 auf?

            Ein Webserver leitet nur Bytes durch.

            Wenn deine Seite laut Deklaration UTF-8 sein soll, es aber nicht ist, kommt Müll raus.

            PS: Warum denn jetzt plötzlich doch wieder ein Webserver? Ich denke, es gibt keinen.

            - Sven Rautenberg

            --
            "Love your nation - respect the others."