Puhmuckel: Gibt es hier Unicode Spezialisten?

Hallo,

ich habe mich auf unicode.org sowie auf den Unicode Seiten von w3c gut eingelesen und ich raffe es immer noch nicht.

Was heißt eine Seite ist im Unicode Format?
Ich dachte immer, dass man folgende Zeichansatzgabe macht:

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

und dann sämtlicher Text im Quelltext einer html Seite nur hexwerte enthält.

Z.B. &#2321; etc

Was versucht uns der Autor dann mit folgender Unicode Seite mitzuteilen?

http://yudit.org/cgi-bin/test.cgi
Die Seite kann ich auf meinem Rechner, gerade alle möglichen Zeichensätze unter Win 2000 installiert habe. Aber was hat da mit Unicode zu tun.

Mann, nun bin ich total verwirrt.

Werk kann helfen?

Danke

  1. Moin!

    Was heißt eine Seite ist im Unicode Format?

    Das ist eine gute Frage. Hängt wohl davon ab, was der, der diese Aussage traf, damit meinen wollte. :)

    Ich dachte immer, dass man folgende Zeichansatzgabe macht:

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

    Diese Zeichensatzangabe bezeichnet die Art der Codierung.

    HTML und XHTML haben als Zeichensatz (d.h. als Menge aller möglichen auftauchenden Zeichen) immer Unicode.

    Die spannende Frage ist: Wie sage ich dem Browser, dass er beispielsweise ein "A", ein "ö" oder ein "" darstellen soll?

    Und da kommt die ZeichenCODIERUNG ins Spiel.

    Es gibt ASCII. Das ist eine der ältesten Codierungen, und sie hatte damals noch absolut nichts mit Unicode und nicht-englischen Sonderzeichen (Umlauten etc.) im Sinn. In ASCII ist definiert: Das große "A" kriegt den Bytewert "65 (dezimal)".

    Unicode hat die 127 ASCII-Zeichen mit ihren Bytewerten übernommen, und nahezu alle anderen auf dieser Welt existierenden Schriftzeichen dahinter einsortiert.

    Die Zeichencodierung regelt nun, mit welchem Bytewert man dem Programm (hier: dem Browser) sagt, dass er ein "ö" oder ein "" darstellen soll.

    ISO-8859-1 ist eine Methode. Hier werden ausschließlich 8-Bit-Werte verwendet, was die Anzahl der möglichen unterschiedlichen Zeichen auf 256 begrenzt. Tatsächlich werden viele Bytewerte nicht für sichtbare Zeichen genutzt, so dass unter dem Strich alle in Westeuropa gebräuchlichen Sonderzeichen des Alphabets definiert sind. Das bedeutet: Man kann eine Webseite mit ISO-8859-1-Codierung auch ohne die Entities "&auml;" etc. schreiben, der Browser wird es (wenn er nicht komplett blöde ist oder verwirrt wird) verstehen und (wenn die Schriftart die Sonderzeichen alle kennt) korrekt darstellen.

    Allerdings kann man, wenn man ISO-8859-1 verwendet, das Eurozeichen "" nicht eingeben, weil dieses Zeichen in dem Codierungsschema gar nicht enthalten ist! Wenn man das will, muß man auf ISO-8859-15 umsteigen, denn dort ist das Eurozeichen drin - und am Rest der Zeichendefinition ändert sich nichts.

    Will man aber gleichzeitig englisch, deutsch, russisch, japanisch und chinesisch auf einer Webseite haben, reicht ISO-8859-1 (oder -15) nicht aus. Man hat dann zwei Optionen:

    1. Wenn die Zeichenmengen für russisch, japanisch und chinesisch gering sind, kann man sich mit "numerischen Entities" behelfen. Diese Entities bezeichnen den Zahlenwert, der im Unicode-Standard dem gewünschten Zeichen zugeordnet ist, wahlweise dezimal oder hexadezimal. Auf diese Weise kann man beispielsweise immer das Euro-Zeichen anzeigen lassen, indem man &x20AC; oder &8364; eingibt. Das Euro-Zeichen ist in http://www.unicode.org/charts/PDF/U20A0.pdf definiert. AUf dieselbe Weise kann man die russischen, japanischen und chinesischen Schriftzeichen einbinden. Diese Methode arbeitet in jedem Editor, da sie ja selbst keinerlei besondere Schriftzeichen verwendet, sondern nur das &-Zeichen, Zahlen, Semikolon, und ggf. das "x".

    2. Man kann den Text aber auch direkt als russische/japanische/chinesische Schriftzeichen eingeben, und sie in einer Unicode-Codierung abspeichern. UTF-8 ist eine ganz brauchbare Codierungsform, weil bei ihr darauf geachtet wurde, kompatibel zu ASCII zu bleiben. Alle Zeichen bis zum Bytewert 127 sind in UTF-8 identisch mit ASCII. Da HTML-Tags, CSS und Javascript nur aus ASCII-Zeichen bestehen, bleiben diese Elemente immer lesbar.

    Einzig die Sonderzeichen ändern sich. Deutsche Umlaute erscheinen üblicherweise als "zwei seltsame Zeichen". Das ist die UTF-8-Codierung, denn alle Zeichen, deren Wert in Unicode über 127 liegt, werden in zwei oder noch mehr Bytewerten codiert.

    Die bei uns gebräuchlichen Sonderzeichen sind in http://www.unicode.org/charts/PDF/U0080.pdf mit ihren hexadezimalen Unicode-Werten aufgeführt. Dieser Wert wird für UTF-8 nach bestimmten Regeln in mehrere Bytewerte aufgespalten, die für sich genommen immer noch druckbare Zeichen sind, auch wenn man nur ASCII oder ISO-8859-1 hat. Aber sie sehen halt etwas "wild" aus.

    und dann sämtlicher Text im Quelltext einer html Seite nur hexwerte enthält.

    Z.B. &#2321; etc

    Wie ich erklärt habe, kannst du diese "Hexwerte" (dein Beispiel ist übrigens KEIN Hex-Wert, sondern ein Dezimalwert) jederzeit und vollkommen unabhängig von deinem Zeichensatz verwenden. Auf diese Weise kriegst du beispielsweise relativ sicher das Euro-Zeichen hin. Aber auch deutsche Umlaute sollten gehen. Laut der oben verlinkten Tabelle hat das "ö" den Wert "00F6". Du kannst also überall ein "ö" durch &xF6; einfügen. Wahlweise auch statt hexadezimal F6 die dezimale 246 nehmen: &246;. Wenn du ISO-8859-1 als Codierung hast, kannst du das "ö" auch direkt eintippen, und wenn du auf Nummer sicher gehen, aber auch direkt sehen willst, welches Zeichen du da getippt hast, nimmst du die Entity "&ouml;".

    Was versucht uns der Autor dann mit folgender Unicode Seite mitzuteilen?

    http://yudit.org/cgi-bin/test.cgi

    Diese Seite ist mit der Codierung UTF-8 ausgeliefert worden. Wenn du sie in einem UTF-8-unfähigen Texteditor im Quelltext anschaust und den deutschen Text betrachtest, werden dir die Umlaute auffallen. Diese sind (leider ist nur ein "ä" drin) immer in der Form "großes A-Tilde und ein seltsames Zeichen dahinter". Dieses große "Ã" anstatt der Umlaute ist das markante Zeichen für "UTF-8 ist am Werk".

    Die Seite kann ich auf meinem Rechner, gerade alle möglichen Zeichensätze unter Win 2000 installiert habe. Aber was hat da mit Unicode zu tun.

    Mein Opera zeigt mir nicht alle Schriftzeichen komplett an, etliche werden nur als rechteckige Kästen angezeigt - ein Zeichen für "dieses Schriftzeichen ist in der gewählten Schriftart nicht definiert". Aber grundsätzlich funktioniert es bei mir.

    - Sven Rautenberg

    1. Hallo,

      danke für diese sehr ausführlichen Antworten. Es hat wirklich SEHR geholfen!!! Jetzt verstehe ich es.

      Noch eine Frage hinterher:

      Wie ist es aber nun, wenn ich einen Produktkatalog aus pdf Dateien erstellen muss.

      Ich würde gerne für die Zukunft alles unicode konform machen.
      In Selfhtml wird ja auch gesagt, dass früher oder später unicode die derzeitigen Zeichensätze ablösen soll.

      Es wäre für mich unmöglich all diese griechischen Texte in die hex Werte zu konvertieren. Dafür bräuchte ich nur für das Nachschlagen wahrscheinlich 25 Jahre. Wenn ich nun einen Text in einem PDF Dokument markiere und versuche diesen in die mySQL DB zu kopieren konvertiert der die in ASCII Zeichen.
      Wie bekomme ich die nun aus dem pdf Dokument heraus?

      Danke

      1. Moin!

        Wie ist es aber nun, wenn ich einen Produktkatalog aus pdf Dateien erstellen muss.

        Das hängt - wie immer - von der Software ab. PDF selbst sollte es eigentlich hinbekommen, Unicode zu verarbeiten. Sofern dein Ausgangsmaterial also zumindest die gewünschten Zeichen anzeigt, sollte es erstmal keine Probleme geben.

        Ich würde gerne für die Zukunft alles unicode konform machen.

        Das ist sicherlich eine gute Idee. Du gewinnst dadurch den Vorteil, dass du wirklich alle möglichen und in Unicode definierten Zeichen darstellen kannst (einige Alphabete sind ja leider nicht drin, beispielsweise Klingonisch - das wurde abgelehnt).

        In Selfhtml wird ja auch gesagt, dass früher oder später unicode die derzeitigen Zeichensätze ablösen soll.

        Diese Aussage würde ich etwas kritisch betrachten. Zum einen: Unicode ist der zugrundeliegende Zeichensatz für HTML, XHTML und XML. Und zwar schon seit immer, weil die Urform SGML schon darauf aufbaut. Das ist also nichts neues.

        Was hingegen neu ist, ist der zunehmende Anteil nicht-englischer Sprachen im Internet. Das heißt, die Bedeutung internationaler Webseiten und die Verarbeitung von Zeichenmischungen, die sich im Prinzip nur mit "gemischten" Codierungen wie UTF-8 darstellen lassen, wächst gewaltig.

        Während man also früher für seine englische und/oder deutsche Webseite ganz prima mit "irgendeinem" Editor zurechtkam, ist es heutzutage sehr ratsam, einen unicode-fähigen Editor zu benutzen, welcher in der Lage ist, UTF-8 auszugeben. Und andersherum steigt auch die Bedeutung der Verarbeitung von UTF-8-Daten aus Formularen. Hier bekleckern sich die Browser (mit Ausnahme von Opera) leider nicht mit Ruhm, sondern machen noch viel Blödsinn.

        Aber HTML hat mit PDF zunächst einmal absolut nichts zu tun, weshalb die dort auftretenden Probleme dich nicht verunsichern sollten. Die Erstellung eines PDFs ist mit einer Insellösung (d.h. es reicht, dass es auf deinem Rechner geht) machbar - sofern das PDF korrekt erstellt ist, sollte es dann überall richtig dargestellt werden.

        Es wäre für mich unmöglich all diese griechischen Texte in die hex Werte zu konvertieren. Dafür bräuchte ich nur für das Nachschlagen wahrscheinlich 25 Jahre. Wenn ich nun einen Text in einem PDF Dokument markiere und versuche diesen in die mySQL DB zu kopieren konvertiert der die in ASCII Zeichen.

        Das ist alles eine Frage der Zeichencodierung. Es gibt eine ISO-8859-7 Codierung für griechisch. Ein PDF, welches nur griechischen Text enthält, kann damit prima klarkommen. Das bedeutet aber auch: Der Bytewert, der im griechischen ISO-8859-7 für das große Omega steht (dezimal 217), der steht im deutschen ISO-8859-1 für das "Ù". Deswegen ist es extrem wichtig, dass man zu einer Bytefolge, die einen Text darstellen soll, auch die verwendete Codierung angibt. Ebenso kann man, wenn man die Codierung kennt, eine Konvertierung in andere Codierungen durchführen. Ein guter Editor kriegt sowas hin.

        Für deine Experimente würde ich dir den Editor "UniRed" empfehlen. Der ist Freeware und kann mit allen Zeichencodierungen umgehen, die man üblicherweise antreffen kann. http://www.esperanto.mv.ru/UniRed/.

        Wie bekomme ich die nun aus dem pdf Dokument heraus?

        Experimentieren, und gucken, was rauskommt.

        Ach ja - mir fällt gerade auf, dass ich im ersten Posting ([pref:t=84613&m=496327]) alle numerischen Entities falsch angegeben habe. Immer fehlt das Doppelkreuz. Falsch: &250; Richtig &#250;

        - Sven Rautenberg

        1. Guten Morgen,

          habe mir Unipad heruntergeladen und aus der PDF-Datei per  und paste die Zeichen in den Unipad Editor gepastet.

          Und alle Zeichen werden dort als Ascii Zeichen angezeigt. Nicht ein griechisches Zeichen. Also genau die gleiche Geschichte wie bei bei dem phpmyadmin.

          Die PDF Datei wurde von unserer Werbeagentur erstellt, die auch unseren   Produktkatalog in Hartform erstellt.

          Es sind auf meinem Rechner alle möglichen Schriftarten installiert.
          Warum kann ich nix aus der PDF Datei kopieren ?

          Danke

          1. Moin!

            habe mir Unipad heruntergeladen und aus der PDF-Datei per  und paste die Zeichen in den Unipad Editor gepastet.

            Und alle Zeichen werden dort als Ascii Zeichen angezeigt. Nicht ein griechisches Zeichen. Also genau die gleiche Geschichte wie bei bei dem phpmyadmin.

            Definiere "ASCII-Zeichen".

            - Sven Rautenberg

            1. Hi,

              Definiere "ASCII-Zeichen".

              Nun du weißt ja wie griechische zeichen aussehen.
              Die lateinischen kommen nicht drin vor.
              Wenn ich aber etwas aus dem pdf Dikument kopiere und als utf-7 in unipad paste habe ich nur lateinische Buchstaben.

              1. Moin!

                Nun du weißt ja wie griechische zeichen aussehen.
                Die lateinischen kommen nicht drin vor.
                Wenn ich aber etwas aus dem pdf Dikument kopiere und als utf-7 in unipad paste habe ich nur lateinische Buchstaben.

                Wenn alles blöd läuft, passiert vielleicht folgendes:
                Im PDF sind die Zeichen nach ISO-8859-griechisch (ich weiß die Nummer nicht auswendig) codiert. Die kopierst du dir in die Zwischenablage und schließlich in den Unipad, dabei wird aber nur die Standardcodierung ISO-8859-1 angewandt, so dass du plötzlich deutsche Umlaute kriegst.

                Oder im PDF ist die Schriftart Symbol verwendet worden, welche bei Eingabe lateinischer Buchstaben das Aussehen von griechischen Buchstaben durch den Font realisiert. Das kannst du prüfen, indem du mal nach Word einfügst und diese Schriftart zuweist.

                Beides ließe sich grundsätzlich durch entsprechendes Umcodieren beheben, das erfordert aber natürlich Programmieraufwand.

                - Sven Rautenberg

      2. Was heißt eine Seite ist im Unicode Format?
        Ich dachte immer, dass man folgende Zeichansatzgabe macht:
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

        Das ist nur der zweite Teil. Der Server muss auch noch den passenden HTTP-Header ausliefern, also
         Content-type: text/html;charset=utf-8
        Wieso das so ist: http://webstandards.org/learn/askw3c/dec2002.html
        Wie genau das geht: http://httpd.apache.org/docs/mod/mod_mime.html#forcetype

        und dann sämtlicher Text im Quelltext einer html Seite nur hexwerte enthält.
        Z.B. &#2321; etc

        Nein! Da hier ein Zeichensatz angegeben ist, nämlich utf-8, können die Zeichen nativ notiert werden, siehe das Beispiel mit dem Hahn auf dem Mist. Die Entitynotation (sei es als benanntes Zeichen, Hex- oder Dez-) ist bloß nützlich, wenn man einen Zeichen notieren will, welchen im angegebenen Zeichensatz nicht nativ vorkommt, z.B. kyrillische Zeichen beim Westeuropäischen Zeichensatz iso-8859-15. utf-8 hat dieses Problem nicht, da es dank Unicode *alle* Zeichen nativ notieren kann. Alles klar?
        In nativer Notation für ein griechisches Zeichen: durchschnittlich zwei Bytes. In Dez: durchschnittlich sechs Bytes. In Hex: durchschnittlich acht Bytes. Als benanntes Zeichen: durschnittlich über 5.5 Bytes.

        Was versucht uns der Autor dann mit folgender Unicode Seite mitzuteilen?
        http://yudit.org/cgi-bin/test.cgi
        Die Seite kann ich auf meinem Rechner, gerade alle möglichen Zeichensätze unter Win 2000 installiert habe. Aber was hat da mit Unicode zu tun.

        Ich habe alle Fonts von der Downloadversion von IE5.01 (ielpk*.cab) sowie die Fonts mit Unicodeunterstützung Arial Unicode MS sowie Bitstream Cyberbit installiert und sehe in Opera7.5/Win98 fast alles in mäßig bis perfekter Darstellung. Altungarisch ist nicht darstellbar, da die Codepunkte in einem privat deklarierten Bereich liegen, dafür braucht man also einen Spezialfont.
        Ein Font hat dann Unicodeunterstützung, wenn er viele Codepunkte jenseits von U+00FF anbietet. Das merkt man meist schon an der schieren Dateigröße.

        Wie ist es aber nun, wenn ich einen Produktkatalog aus pdf Dateien erstellen muss.
        Es wäre für mich unmöglich all diese griechischen Texte in die hex Werte zu konvertieren.
        Wenn ich nun einen Text in einem PDF Dokument markiere und versuche diesen in die mySQL DB zu kopieren konvertiert der die in ASCII Zeichen.
        Wie bekomme ich die nun aus dem pdf Dokument heraus?

        Dein SQL-Editor saugt. Du musst den Umweg über einen Unicode-fähigen Editor nehmen, ich empfehle hochvorzüglichst Unipad http://unipad.org/ (Freeware, eingeschränkt). Dann kopierst du Inhalte aus dem PDF und fügst sie in Unipad ein. Dann wählst du in Unipads Kontextmenü Kopieren als...->utf-8. Diesen Inhalt schreibst du dann in die Datenbank (evtl. musst du die Datenbank noch auf utf-8 umstellen http://dev.mysql.com/doc/mysql/en/Charset.html), oder hantierst mit HTML direkt im Editor. Die Konvertierung lässt sich auch vielfältig automatisieren, mein Favorit ist Perl.

        Ich habe es eben selber mit einem griechischen PDF probiert, geht prima wie beschrieben.

        1. Guten Morgen,

          "evtl. musst du die Datenbank noch auf utf-8 umstellen  http://dev.mysql.com/doc/mysql/en/Charset.html), oder hantierst mit HTML direkt im Editor. "

          Habe mir gerade durchgelesen, wie es um mysql im utf-8 Format steht. So wie ich es verstehe, geht das nur mit Version 4.1.x.x.

          Diese Version auf meinem lokalen Testserver zu installieren, würde ja nicht das Problem darstellen. Aber ich denke unser Webspace Provider ist bei 4.0.20a so wie ich momentan hier auf dem lokalen Rechner.

          So würde es mir ja nichts bringen, denn ich kann die Datenbank unseres I-Auftritts dann ja nicht aktualisieren.

          Heißt das, dass es nicht für mich möglich ist, auf UTF-8 bei der DB umzusteigen? Danke.

    2. Hallo,

      Mein Opera zeigt mir nicht alle Schriftzeichen komplett an, etliche werden nur als rechteckige Kästen angezeigt - ein Zeichen für "dieses Schriftzeichen ist in der gewählten Schriftart nicht definiert". Aber grundsätzlich funktioniert es bei mir.

      Apropos "... nicht definiert": wenn ich in meinem CSS eine Schriftart angebe, z.B. MS Arial Unicode, welche generische Schriftart muss ich verwenden?
      Inwieweit kann ich bei sans-serif darauf vertrauen, dass die eingestellte Schriftart mein griechischen, hebräischen... Zeichen darstellen kann?

      Grüße
      Marcus

      1. Moin!

        Apropos "... nicht definiert": wenn ich in meinem CSS eine Schriftart angebe, z.B. MS Arial Unicode, welche generische Schriftart muss ich verwenden?

        Da "Arial" eine serifenlose Schrift ist, nimmst du natürlich "sans-serif".

        Inwieweit kann ich bei sans-serif darauf vertrauen, dass die eingestellte Schriftart mein griechischen, hebräischen... Zeichen darstellen kann?

        Gar nicht. Das ist Sache des Schriftarteninstallierers. :) Also des Computerbesitzers, der deine Seite angucken will.

        Es ist sehr wahrscheinlich, dass jemand, dessen Muttersprache mit "seltsamen Zeichen" (wie griechisch, kyrillisch, japanisch) geschrieben wird, Schriftarten entsprechender Ausstattung installiert hat und somit die gewünschten Schriftzeichen tatsächlich sehen wird.

        Es ist hingegen eher unwahrscheinlicher, dass jemand, der z.B. des Japanischen nicht mächtig ist, die tollsten und ausgefallensten japanischen Schriftarten installiert hat, die du zufällig auch in deinem CSS angibst. Der wird wahrscheinlich weder Sprache noch Schriftzeichen verstehen, so dass es für ihn egal ist, ob er (wie auch immer gestylte) japanische Zeichen oder nur die bekannten "Nicht vorhandenes Zeichen"-Rechtecke zu sehen bekommt.

        Unicode ist nur dafür da, zu beschreiben, welcher Buchstabe angezeigt werden soll. Erst die Schriftart beschreibt, wie dieser Buchstabe denn konkret aussehen soll.

        - Sven Rautenberg

        1. Hallo,

          Es ist sehr wahrscheinlich, dass jemand, dessen Muttersprache mit "seltsamen Zeichen" (wie griechisch, kyrillisch, japanisch) geschrieben wird, Schriftarten entsprechender Ausstattung installiert hat und somit die gewünschten Schriftzeichen tatsächlich sehen wird.

          Vielleicht sollte ich die Frage anders formulieren:
          Für Windows-Benutzer nehme ich Arial unicode und nehme an, dass sie zumindest auf neueren Systemen vorhanden ist.
          Welche Schriftarten, die einen ähnlich breiten Sprachraum abdecken gibt es bei MAC oder Linux?

          Als generische Schriftart natürlich immer sans-serif.

          Grüße
          Marcus

          1. Moin!

            Vielleicht sollte ich die Frage anders formulieren:
            Für Windows-Benutzer nehme ich Arial unicode und nehme an, dass sie zumindest auf neueren Systemen vorhanden ist.

            Kannst du nicht. Ich hab die Schriftart bei mir jedenfalls nicht gefunden. Nach Auskunft von http://www.alanwood.net/unicode/fonts.html#arialunicodems wird diese Schrift mit Office 2000, XP, Frontpage 2000 und Publisher 2002 ausgeliefert.

            Die normale Arial-Schrift hat _erheblich_ weniger Zeichen definiert (1320 gegen 51180), deckt aber immerhin einige wichtige Sprachen bzw. Alphabete ab: Griechisch, Kyrillisch, Hebräisch, Arabisch. Damit kommt man also schon mal recht weit, wenn man den europäischen Raum betrachtet.

            Welche Schriftarten, die einen ähnlich breiten Sprachraum abdecken gibt es bei MAC oder Linux?

            Ich habe keine Ahnung, aber da Linux auch mit TrueType-Schriften umgehen kann, wäre es durchaus denkbar, dass man auch dort auf "Arial" trifft. Diese Schriftart wird von Microsoft schließlich als freier Download im "Core Fonts-Pack" angeboten (die Lizenzbedingungen dafür hab ich jetzt nicht studiert).

            Trotzdem ist deine Wahl der Schriftartdefinition natürlich nicht schlecht. Sofern ein System tatsächlich kein "Arial Unicode MS" besitzt, würde auf "sans-serif" ausgewichen. Das ist mutmaßlich eine Schriftart, die wahrscheinlich viele Unicode-Zeichen enthält - auf Windows-Systemen würde ich immer die normale Arial erwarten. Dann paßt es also doch wieder, und das Maximum des darstellbaren wird erreicht.

            - Sven Rautenberg

            1. Hi,

              Nach Auskunft von http://www.alanwood.net/unicode/fonts.html#arialunicodems wird diese Schrift mit Office 2000, XP, Frontpage 2000 und Publisher 2002 ausgeliefert.

              nun, ich habe einen nicht 1 1/2 Jahre alten Rechner, der mit XP ausgeliefert wurde und diese Schriftart nicht installiert hat. Ich habe allerdings nur ältere Office-Programme und natürlich kein Frontpage.

              freundliche Grüße
              Ingo

            2. Hallo,

              Kannst du nicht. Ich hab die Schriftart bei mir jedenfalls nicht gefunden. Nach Auskunft von http://www.alanwood.net/unicode/fonts.html#arialunicodems wird diese Schrift mit Office 2000, XP, Frontpage 2000 und Publisher 2002 ausgeliefert.

              Danke für den Link. Demnach könnte man für UNIX als Alternative noch 'Caslon  3551 glyphs in Roman' angeben http://www.alanwood.net/unicode/fonts_unix.html#caslon, für MAC OS X 'Lucida Grande  1753 glyphs in version 4.0d21' (system font)http://www.alanwood.net/unicode/fonts_macosx.html und für MAC OS 9 'Tahoma  987 glyphs in version 1.85' http://www.alanwood.net/unicode/fonts_mac.html .

              Die Folge font-family: 'Arial Unicode MS', Arial, Caslon, 'Lucida Grande', Tahoma, sans-serif; sollte also die meisten Systeme abdecken. Wobei es mir hauptsächlich darum geht, dass die Zeichen überhaupt dargestellt werden. Ob sie jetzt aus der gleichen Schriftfamilie stammen und serif oder sans-serif sind ist nebensächlich, da für den normalen Text eine eigne Schriftart definiert wird.

              Fehlt eigentlich nur noch ein Hinweis auf Linux. Hat hierzu jemand Informationen?

              Grüße
              Marcus

              1. Hi,

                Die Folge font-family: 'Arial Unicode MS', Arial, Caslon, 'Lucida Grande', Tahoma, sans-serif; sollte also die meisten Systeme abdecken.

                Ich habe bei meinen Standard Win XP System hiervon nur Arial und Tahoma. Tahoma enthält im Gegensatz zu Arial wesentlich mehr fremdsprachige Zeichen und ich glaube, daß Tahoma nicht weniger verbreitet ist als Arial. Wäre es da nicht besser, ganz auf Arial zu verzichten oder zumindest Tahoma vorzuschalten?

                freundliche Grüße
                Ingo

                1. Hallo,

                  Die Folge font-family: 'Arial Unicode MS', Arial, Caslon, 'Lucida Grande', Tahoma, sans-serif; sollte also die meisten Systeme abdecken.
                  Ich habe bei meinen Standard Win XP System hiervon nur Arial und Tahoma. Tahoma enthält im Gegensatz zu Arial wesentlich mehr fremdsprachige Zeichen und ich glaube, daß Tahoma nicht weniger verbreitet ist als Arial. Wäre es da nicht besser, ganz auf Arial zu verzichten oder zumindest Tahoma vorzuschalten?

                  Ich habe bei mir nachgesehen: Arial enthält mehr arabische Zeichen, Tahoma dagegen zusätzlich Thai. Es kommt wohl auch auf die Version der Schrift an. Lucida sans unicode gibt es auch noch, das wiederum unterstützt die kyrillischen Zeichen besser :-(

                  Grüße
                  Marcus

              2. Hallo.

                Demnach könnte man für UNIX als Alternative noch 'Caslon  3551 glyphs in Roman' angeben

                [...]

                Die Folge font-family: 'Arial Unicode MS', Arial, Caslon, 'Lucida Grande', Tahoma, sans-serif;

                Man mag es als kosmetisch abtun, aber die Caslon ist keine Groteskschrift. Je nach Verwendungszweck sollte die Reihenfolge also eine andere sein.
                MfG, at

  2. Hallo,

    Was heißt eine Seite ist im Unicode Format?

    Das die Zeichen, Zahlen und Buchstaben in der Seite nach einem Unicode-Schema (en)codiert sind.

    "The Unicode Standard uses 8-bit code units in the UTF-8 encoding form, 16-bit code units in the UTF-16 encoding form, and 32-bit code units in the UTF-32 encoding form"

    Das beduetet, dass ein Zeichen in UFT-8 8-bit Länge hat. Wie diese Zeichen an einem Rechner dargestellt werden, ist eine andere Frage.

    Ich dachte immer, dass man folgende Zeichansatzgabe macht:
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

    und dann sämtlicher Text im Quelltext einer html Seite nur hexwerte enthält.

    Nein. Die 'normalen' ASCII-Zeichen muss du nicht als hexadezimale Wert angeben. Nur Zeichen die "höher" sind. Bzw. diese auch nur dann, wenn du die Seite nicht im Unicode-Format speicherst.
    Z.B. so sieht der deutsche (Quell)Text aus deinem Beispiel aus, wenn die Seite direkt in Unicode-Erzeugt wird:

    Wenn der Hahn kräht auf dem Mist,
    ändert sich das Wetter,
    oder es bleibt wie es ist.

    http://yudit.org/cgi-bin/test.cgi
    Die Seite kann ich auf meinem Rechner, gerade alle möglichen Zeichensätze unter Win 2000 installiert habe. Aber was hat da mit Unicode zu tun.

    Das hat damit zu tun, dass die Seite im Unicode-Format gespeichert bzw. erzeugt ist.
    Ob du alles "lesen" kannst hängt aber davon ab ob dein OS unicodefähig ist (win200 ist es) und ob du eine Schriftart installiert hast, die die benötigte Zeichen enthält.

    Grüße
    Thomas

    1. "The Unicode Standard uses 8-bit code units in the UTF-8 encoding form, 16-bit code units in the UTF-16 encoding form, and 32-bit code units in the UTF-32 encoding form"

      Das beduetet, dass ein Zeichen in UFT-8 8-bit Länge hat.

      Nein, falsch. UTF ist keine Zeichentabelle, die Grundlage ist immer die Unicode-Tabelle, und die umfasst immer 2^32 Zeichen, also 32 Bit, nicht mal hier 8 Bit und dort wieder 32.
      UTF sind Kodierungen (UTF-8, -16 und -32), die genutzt werden, um...

      1. nicht für jedes Zeichen 32 Bit zu verbraten. Ein Text, der nur 100 verschiedene Zeichen enthält, kann mit 7 Bit "Auflösung" (2^7=128 mögliche Werte) gespeichert werden, dafür braucht man nicht 32 Bit pro Zeichen.
      Praktischerweise lassen sich die meisten Texte tatsächlich mit 7 Bit (genauer: dem 7-bittigen US-ASCII-Zeichensatz) darstellen. Speichert man in solchen Fällen pro Zeichen jedesmal 32 Bit, würden 75% der Bits durchgehend 0 anzeigen, 75% des Speicherplatzes wären also nutzlos verschwendet.

      Die UTF-Kodierungen erlauben es, die 32 Bit je Unicode-Zeichen in eine variable Wortlänge zwischen 8 und 48 Bit bzw. einem und sechs Byte zu verpacken. Wer möchte, kann UTF deshalb auch als eine Art Komprimierungstechnik bezeichnen. Die zusätzlichen Bits werden benötigt, um anzuzeigen, wieviele Bytes das aktuelle Zeichen belegt.

      2. zu verhindern, dass in einer Zeichenkette Nullbytes (alle Bits = 0) vorkommen. Nullbytes werden häufig zur Markierung des Endes einer Zeichenkette genutzt. Bei 32-bittiger Speicherung würden je nach Zeichenwahl, wie bereits unter 1. dargestellt, sehr häufig Nullbytes auftauchen.

      Die UTF-Kodierungen sind so angelegt, dass nirgends ein einzelnes Byte ungewollt Null anzeigt.

      UTF ist in diesem Sinne auch abwärtskompatibel. Ein Text mit lateinischen Buchstaben ist in 32-Bit Unicode nicht von 7-Bit-US-ASCII zu unterscheiden, sofern in Unicode als UTF-8 gespeichert wurde. Selbst Unicode/UTF-8-Texte mit gelegentlichen nicht-lateinischen Zeichen lassen sich mit herkömmlichen Programmen noch problemlos erkennen, wie man an Deinem Beispiel ja hervorragend sieht:

      Wenn der Hahn kräht auf dem Mist

      Unschwer zu erkennen, dass das Zeichen ä in Deinem UTF-8-Beispiel nicht 8 sondern 16 Bit belegt. Darauf, dass dieser Unicode-Text mit überwiegend lateinischen Buchstaben immer noch lesbar ist, obwohl er als US-ASCII dargestellt wird, brauche ich wohl nicht hinzuweisen :)

      Die Zahl am Ende des UTF-Namens besagt also, wie lang die kleinste Zeichen-Einheit sein kann, nicht wie lang sie generell ist.

      UTF-8 ist übrigens nochmals kurz und detailiert unter [http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8] beschrieben.

      1. Moin!

        UTF ist in diesem Sinne auch abwärtskompatibel. Ein Text mit lateinischen Buchstaben ist in 32-Bit Unicode nicht von 7-Bit-US-ASCII zu unterscheiden, sofern in Unicode als UTF-8 gespeichert wurde. Selbst Unicode/UTF-8-Texte mit gelegentlichen nicht-lateinischen Zeichen lassen sich mit herkömmlichen Programmen noch problemlos erkennen, wie man an Deinem Beispiel ja hervorragend sieht:

        Wenn der Hahn kräht auf dem Mist

        Hinsichtlich der Kompatibilität wäre noch anzumerken, dass man UTF-8-codierten Text auch ohne Kenntnis dieser Codierung rein nach den Bytewerten sortieren kann - das Ergebnis wird entsprechend der einzelnen Alphabetsortierungen der Sprachen mehr oder weniger korrekt sein (Ausnahmen bestätigen die Regel - der Sonderfall des Deutschen, dass die Umlaute beim Sortieren wie die zugehörigen Stammlaute sortiert werden, läßt sich durch simples Bytewert-Sortieren beispielsweise nicht realisieren).

        Man kann mit UTF-8 also recht problemlos arbeiten, ohne auch nur ein einziges UTF-8-Zeichen verstehen zu müssen. Sofern man nicht tatsächlich auf Einzelzeichen zugreifen muß (also beispielsweise das "ä" sucht und dafür eine Funktion benutzt, die nur exakt ein 8-Bit-Zeichen finden kann), reicht es vollkommen aus, den UTF-8-Text einfach nur ohne große Bearbeitung ein- und auszugeben.

        - Sven Rautenberg

    2. Moin,

      Was heißt eine Seite ist im Unicode Format?

      Das die Zeichen, Zahlen und Buchstaben in der Seite nach einem Unicode-Schema (en)codiert sind.

      Ich glaube es ist dem Verständnis nicht unbedingt zuträglich von einem "Unicode-Format" zu reden. Unicode ist eine überdimensionale Zeichentabelle (und ein bisschen mehr) aber an sich kein Format. Das einzige was ich als 'Unicode-Format' durchgehen lassen würde, wäre ein Array von vorzeichenlosen 32-Bit-Integern.

      Es hilft meiner Meinung nach, sich immer vor Augen zu führen dass Unicode einfach eine Tabelle ist die allen möglichen Zahlen Zeichen zuweist (ok, das ist in Wirklichkeit noch etwas komplizierter) und man vor sich immer irgendeine Kodierung hat - sei es US-ASCII, ISO-8859-1, UTF-8 oder UCS-4 (wobei von den genannten nur die letzten beiden den direkten Zugriff auf den vollen Zeichenvorrat bieten) - und diese Kodierung irgendwie die Folge von Bytes auf Zahlen (Unicode-Codepoints) abbildet.

      "The Unicode Standard uses 8-bit code units in the UTF-8 encoding form, 16-bit code units in the UTF-16 encoding form, and 32-bit code units in the UTF-32 encoding form"

      Das beduetet, dass ein Zeichen in UFT-8 8-bit Länge hat. Wie diese Zeichen an einem Rechner dargestellt werden, ist eine andere Frage.

      Nein, "8-bit code units" heisst: die Länge eines Zeichens ist immer ein vielfaches von 8 Bit, dito für 16 Bit.

      --
      Henryk Plötz
      Grüße aus Berlin
      ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
      ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
      1. Hallo,

        Ich finde es einfach bemerkenswert, dass manche echt sonst nicht zu tun haben, als mich zu korrigieren.

        Wirklich bemerkenswert.

        Grüße
        Thomas

        1. Ich finde es einfach bemerkenswert, dass manche echt sonst nicht zu tun haben, als mich zu korrigieren.

          Och, beleidigt? Eiei, mussu keine Fehlerchen machen, dann auch keiner korrigieren tun müssen.

        2. Hallo,

          Ich finde es einfach bemerkenswert, dass manche echt sonst nicht zu tun haben, als mich zu korrigieren.

          Ich würde sagen, die Anmerkungen / Korrekturen von Henryk sind nicht als abwertend zu sehen, denn sie sind fachlich korrekt und nicht beleidigend. Eine ungenaue Darstellung kann im weiteren Verlauf einer Diskussion jede Menge Verwirrung stiften. Insofern finde ich, dass sie sogar sehr hilfreich sind.

          Grüße
          Marcus

          1. Hallo,

            Ich finde es einfach bemerkenswert, dass manche echt sonst nicht zu tun haben, als mich zu korrigieren.

            Ich würde sagen, die Anmerkungen / Korrekturen von Henryk sind nicht als abwertend zu sehen, denn sie sind fachlich korrekt und nicht beleidigend. Eine ungenaue Darstellung kann im weiteren Verlauf einer Diskussion jede Menge Verwirrung stiften. Insofern finde ich, dass sie sogar sehr hilfreich sind.

            Meine Posting bezog sich nicht außschließlich auf Henryk.

            Das Bemerkenswerte war, dass hier (wieder) nur nebensächliche Dinge auf die Goldwage gelegt wurden:
            Die Spezifikation selbst spricht von "Unicode-Format", also ist es falsch wenn ich das verwende.

            Ich sagte: "Das beduetet, dass ein Zeichen in UFT-8 8-bit Länge hat."
            Daraufhin wird mir lang und breit erklärt, dass UTF keine Zeichentabelle sei (wo habe _ich_ das gesagt?).
            Dann beginnt man mit dem Unterricht zwischen bits und bytes und bringt das dann selbst ordentlich durcheinander und widerspricht sogar dem, was in den Dokumenten von unicode.org steht z.B. unter:
            http://www.unicode.org/faq/utf_bom.html#37

            Das alles zusammen nervt.

            Grüße
            Thomas

            1. Cheers!

              Ich finde es einfach bemerkenswert, dass manche echt sonst nicht zu tun haben, als mich zu korrigieren.

              Wer gelesen wird, wird auch korrigiert.   ;-)

              Ich sagte: "Das beduetet, dass ein Zeichen in UFT-8 8-bit Länge hat."
              [...]
              http://www.unicode.org/faq/utf_bom.html#37

              Die code unit size ist 8 bit, aber die Zeichenlaenge 8, 16 oder 32 bit. http://en.wikipedia.org/wiki/UTF-8

              Das alles zusammen nervt.

              Die Wahrheit tendiert immer leicht dazu zu nerven.
              (Ken Thompson hat sich uebrigens auch sehr erfolgreich um die Analyse von Schachendspielen bemueht (so wie auch Alan Turing). http://www.wordiq.com/definition/Ken_Thompson - cool wie Mr.Thompson und Mr.Ritchie auf dem Photo rueberkommen :-)

              Wenn der Hahn kräht auf dem Mist,

              Kennt jemand den Algorythmus
               Wenn der Hahn kräht auf dem Mist
              in
               Wenn der Hahn kr<&#y>ht auf dem Mist    (<&#y>; y = dez. Unicode-Wert)
              umzuwandeln und kann diesen hier mitteilen? (Mich taete auch der Algorythmus fuer die Gegenrichtung interessieren.)

              Gruss,
              Lude

            2. Moin,

              Meine Posting bezog sich nicht außschließlich auf Henryk.

              So ein Zufall ;-) Meins nicht ausschließlich auf dich. Es ging mir mehr darum einer Sichtweise Ausdruck zu verleihen. Unter dieser Betrachtungsweise würden sich dann einige Fragen die hier ab und zu auftauchen einfach gar nicht mehr stellen.

              Die Spezifikation selbst spricht von "Unicode-Format", also ist es falsch wenn ich das verwende.

              Ich habe sie nicht gelesen, könntest du mir also bitte die Stelle zeigen? Weit und breit lese ich nur von 'Unicode Transport Format'.

              Ich sagte: "Das beduetet, dass ein Zeichen in UFT-8 8-bit Länge hat."
              Daraufhin wird mir lang und breit erklärt, dass UTF keine Zeichentabelle sei (wo habe _ich_ das gesagt?).

              Wenn ich dir persönlich etwas erklären wollte, dann würde ich dir eine Mail schicken[1]. Hier[tm] ist aber ein öffentliches Forum in dem mehrere Leute mitlesen (manchmal sogar der Ursprungsautor des Threads) und das ein Archiv führt.

              Dann beginnt man mit dem Unterricht zwischen bits und bytes und bringt das dann selbst ordentlich durcheinander und widerspricht sogar dem, was in den Dokumenten von unicode.org steht z.B. unter:
              http://www.unicode.org/faq/utf_bom.html#37

              Da ist nichts durcheinander (von Bits und Bytes war sowieso überhaupt nie die Rede), da ist aber ein Missverständnis. Du schriebst, dass in UTF-8 ein Zeichen 8 Bit habe. Ein Zeichen ist für mich (und ich nehme einfach mal frecherweise an auch für andere) sowas wie ä, und das hat bekanntermaßen in UTF-8 16 Bit. Ich wollte einfach sagen, dass in UTF-8 ein Zeichen aus 8, 16, 24 oder 32 Bit besteht, in UTF-16 aus 16 oder 32 Bit und in UTF-32 aus 32 Bit.[2]

              Du scheinst 'Zeichen' aber einfach als Übersetzung für 'code unit' zu verwenden.

              [1] Und ja, mir ist klar, dass es eher nicht dazu kommen wird. Wenn überhaupt umgekehrt.
              [2] Der Korrektheit wegen und um Missverständnisse vorzubeugen möge man bitte "ein Zeichen aus ... besteht" als "ein Codepoint durch ... dargestellt wird" lesen.

              --
              Henryk Plötz
              Grüße aus Berlin
              ~~~~~~~~ Un-CDs, nein danke! http://www.heise.de/ct/cd-register/ ~~~~~~~~
              ~~ Help Microsoft fight software piracy: Give Linux to a friend today! ~~
              1. Hallo Henryk,

                Die Spezifikation selbst spricht von "Unicode-Format", also ist es falsch wenn ich das verwende.

                Ich habe sie nicht gelesen, könntest du mir also bitte die Stelle zeigen? Weit und breit lese ich nur von 'Unicode Transport Format'.

                z.B. auf die Schnelle: http://www.unicode.org/glossary/#U
                (Sonst PDF http://www.unicode.org/versions/Unicode4.0.0/ch03.pdf Kapitel 3.9)

                Wenn ich dir persönlich etwas erklären wollte,

                Ich schrieb, dass meine Posting nicht außschließlich dich bezogen war. ;-)

                Da ist nichts durcheinander (von Bits und Bytes war sowieso überhaupt nie die Rede)

                _ich_ redete ja auch nicht davon.

                da ist aber ein Missverständnis. Du schriebst, dass in UTF-8 ein Zeichen 8 Bit habe. Ein Zeichen ist für mich (und ich nehme einfach mal frecherweise an auch für andere) sowas wie ä, und das hat bekanntermaßen in UTF-8 16 Bit. Ich wollte einfach sagen, dass in UTF-8 ein Zeichen aus 8, 16, 24 oder 32 Bit besteht, in UTF-16 aus 16 oder 32 Bit und in UTF-32 aus 32 Bit.[2]

                Du scheinst 'Zeichen' aber einfach als Übersetzung für 'code unit' zu verwenden.

                Ja, das war missverständlich. Ich meinte damit code unit = "minimal bit combination that can represent a unit of encoded text" = "basic unit of encoding for the Unicode character encoding" = Charakter = Zeichen.

                [1]  bla bla bla³. _darum_ ging es wirklich nicht ;-)

                Grüße
                Thomas