Ogi: Konvertierungsroutine MAC OS Latin nach UTF-8 gesucht!

Nabend.

Bin auf der Suche nach der UTF-8 Entsprechung von den Umaluten Ä Ö Ü ä öü $ % & etc. von MAC OS Latin. Bitte nicht die üblichen

HTML-Code-Ersetzungen und so Zeug, sondern die UTF-Code Entsprechungen a la

"\xc2\x80" => "\xe2\x82\xac"

Danke!

O.

  1. Hallo Ogi,

    Bin auf der Suche nach der UTF-8 Entsprechung von den Umaluten Ä Ö Ü ä öü $ % & etc. von MAC OS Latin.

    Ich gehe mal davon aus, daß es Dir um dasselbe Problem wie in dem Thread weiter unten geht, in dem ich Dir schon geantwortet habe. Es wäre schön, wenn Du dort weitergefragt hättest, Doppelpostings sind hier nicht gerne gesehen.

    Bitte nicht die üblichen HTML-Code-Ersetzungen und so Zeug, sondern die UTF-Code Entsprechungen a la "\xc2\x80" => "\xe2\x82\xac"

    Ich würde Dir immer noch empfehlen, eine der gängigen Umkodierungsroutinen zu benutzen, aber wenn Du unbedingt mit Bytes rumwurschteln willst:

    Den relativ kleinen Zeichensatz von MacRoman findest Du z.B. hier in der Wikipedia. Dort suchst Du Dir das zu übersetztende Zeichen raus und guckst dann in Code-Tabellen von Unicode nach dem Codepoint des passenden Zeichens. Für den für Dich relevanten Zeichenvorrat aus MacRoman dürfte das hauptsächlich die Tabelle Latin1 (PDF) sein.

    Dann folgt dir Konvertierung des Codepunkts des Zeichens in UTF-8. Die Resource hinter dem Link gibt das schon relativ gut an. Für die Zeichen aus MacRoman, die sich auf Latin1 mappen lassen sieht das ungefähr so aus:

    Du hast ein Byte mit 8 Bits:

    nnnnnnnn

    In UTF-8 werden dafür 2 Bytes in der folgenden Form benötigt...

    10xxxxx 10xxxxxx

    ... in die Du Deine Bits einfügst:

    10xxxnn 10nnnnnn

    Und die restlichen X werden durch Nullen aufgefüllt:

    10000nn 10nnnnnn

    Viel Spaß.

    Tim

    1. Hallo,

      In UTF-8 werden dafür 2 Bytes in der folgenden Form benötigt...
        10xxxxx 10xxxxxx

      Nein, das ist kein UTF-8. Eine UTF-8-Byte-Sequenz für ein Zeichen sieht für US-ASCII so:
           0xxxxxxx
      und für Latin-1 (U0080 - U00FF), genauer für U0080 - U07FF so:
           110xxxxx 10xxxxxx
      aus. Das steht hier http://de.wikipedia.org/wiki/UTF-8 aber auch so.

      Für U0080 - U00FF (Latin-1) ergäbe sich:
          10000000 -
          11111111
          nnnnnnnn

      ... in die Du Deine Bits einfügst:
        10xxxnn 10nnnnnn

      110xxxnn 10nnnnnn

      Und die restlichen X werden durch Nullen aufgefüllt:
        10000nn 10nnnnnn

      110000nn 10nnnnnn

      viele Grüße

      Axel

      1. Hallo Axel,

        Nein, das ist kein UTF-8

        Ja, Copy und Paste ist doch böse. Aber dann auch noch konsequent damit weitermachen, nenene. Ich schieb's mal auf die Uhrzeit. ;)

        Tim