emu: Vom ausgeschriebenen Zeichen zur Unicodenummer

Hallo!

Ich möchte ein paar japanisch/chinesische Zeichen auf meine Homepage bringen und dazu Unicode benutzen. Ich weiß, Grafiken wären hier vielleicht einfacher, aber ich will eine logisch richtige Seite bauen und Text als solchen codieren.

Mittlerweile habe ich das Wort, das in Japan und Taiwan gleich geschrieben wird, auf einer Seite in Unicode (Google :-) entdeckt. Ich will allerdings aus verschiedenen Gründen meine Seite nicht in Unicode definieren, sondern nur ISO-8859-1 mit dem Einfügen eines Unicodezeichen in der Form ⚏

Die Frage ist jetzt die - wie bekomme ich zu einem "schon umgesetzten" Zeichen wieder die entsprechende Nummer? Gibt es da kleine Programme oder sogar Internetseiten?

emu
[der leider kein chinesisch oder japanisch kann und außerdem kaum etwas von unicode versteht]

  1. Mittlerweile habe ich das Wort, das in Japan und Taiwan gleich geschrieben wird, auf einer Seite in Unicode (Google :-) entdeckt. Ich will allerdings aus verschiedenen Gründen meine Seite nicht in Unicode definieren, sondern nur ISO-8859-1 mit dem Einfügen eines Unicodezeichen in der Form ⚏

    Die Frage ist jetzt die - wie bekomme ich zu einem "schon umgesetzten" Zeichen wieder die entsprechende Nummer? Gibt es da kleine Programme oder sogar Internetseiten?

    Hardcore-Methode: Seite speichern und mit dem Hexeditor die Werte auslesen.

    Gruß,
      soenk.e

    1. Hallo!

      Hardcore-Methode: Seite speichern und mit dem Hexeditor die Werte auslesen.

      Habe ich. Wenn ich - nur als Beispiel im Google Seiten mit ü suche, dann steht im Quelltext mit UTF-8 c3 bc als Hex.

      Aber das ü hat den Unicode ⚏ bzw. ⚏

      Dargestellt wird es bei Google allerdings richtig - was mache ich falsch?

      emu
      [...]

      1. Hardcore-Methode: Seite speichern und mit dem Hexeditor die Werte auslesen.

        Habe ich. Wenn ich - nur als Beispiel im Google Seiten mit ü suche, dann steht im Quelltext mit UTF-8 c3 bc als Hex.

        Aber das ü hat den Unicode ⚏ bzw. ⚏

        Nee, das kleine ü liegt bei 0xfc, genauso wie im iso-15-Satz.
        Unter 0x268f ist nichts definiert, und selbst wenn, der gesamte Bereich von 2600 bis 26ff ist für Grafikzeichen reserviert, Buchstaben findest Du da nicht (siehe http://www.unicode.org/charts/PDF/U2600.pdf).

        Dargestellt wird es bei Google allerdings richtig - was mache ich falsch?

        UTF-8 != Unicode (etwas oberflächlich ausgedrückt)

        Unicode-Zeichen sind bis zu vier Bytes lang. Weil aber vier Bytes pro Zeichen bei vielen Texten eine ziemliche Platzverschwendung wäre, hat man sich UTF-8 ausgedacht. Dabei werden die langen Unicode-Zahlen in Worte unterschiedlicher Länge von einem bis zu vier Bytes untergebracht. Die häufig vorkommenden ASCII-Dinger (also die ersten 127 Zeichen) brauchen nur ein Byte, seltener benutztes dagegen von zwei bis zu sechs Bytes.
        Wie lang das jeweilige Wort ist, kann man immer an den ersten paar Bits eines Bytes erkennen. Beginnt ein Byte mit einem 0-Bit, haben wir es mit nur einem Byte zu tun, beginnt es mit der Folge 110 sind es zwei Bytes, bei 1110 sind es drei, usw. Die jeweils noch dazu gehörenden, folgenden Bytes beginnen alle mit der Sequenz 10.
        Die eigentlichen Daten, also der Zeichencode, steckt in den restlichen Bits.

        Wie das genau funktioniert, ist unter http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 beschrieben.

        Um Dein UTF-8-ü (0xc3bc) umzurechnen, gehen wir folgt vor:

        hex:      c  3       b c
          binär: 1100  0011 1011 1100

        Auf der oben genannten Seite erkennen wir, daß das erste Byte (0xc3) auf 110xxxxx passt. Die eigentlichen Zeichendaten verstecken sich in den mit x markierten Bits. Wir nehmen uns also vom ersten Byte die letzten sechs Bits:

        hex:       c  3       b c
          binär:  1100  0011 1011 1100
          Muster: 110x  xxxx
          Daten:     0  0011

        Ein Byte beginnend mit 110 zeigt den Beginn eines "zwei-Bytigen" Wortes an; zu den bereits geholten sechs Bits kommen also noch welche vom zweiten, folgenden Byte dazu. "Folgebytes" passen immer auf das Muster 10xxxxxx:

        hex:       c  3       b c
          binär:  1100  0011 1011 1100
          Muster: 110x  xxxx 10xx xxxx
          Daten:     0  0011   11 1100

        Damit hätten wir dann auch schon in der letzten Zeile unseren "echten" Unicode: 1111 1100 (führende Nullen fallen logischerweise weg), das entspricht 0xfc, und das wiederum ist das kleine ü (http://www.unicode.org/charts/PDF/U0080.pdf).

        Ich hoffe, das war halbwegs verständlich :)
          soenk.e

  2. Hi,

    Die Frage ist jetzt die - wie bekomme ich zu einem "schon umgesetzten" Zeichen wieder die entsprechende Nummer? Gibt es da kleine Programme oder sogar Internetseiten?

    Nun, die kann man sich prima selber bauen :) , und zwar per JavaScript!

    function decode(inputstring) {
     codedtext = "";
     for(var i=0; i<inputstring.length; i++)
      codedtext += "&#" + inputstring.charCodeAt(i) + ";" ;
     return codedtext;
    }

    Für das zugehörige textarea solltest du einen möglichst umfassend Font wählen,
    der Chinese beinhaltet.

    HTH,
    bye eddie

    Grüße aus dem sonnigen Leipzig