ingobar: HEX->String: Umlaute?

Hallo zusammen,

ich versuche mit der Library php-pdb einen Viewer für meine Palm-Dateien zu basteln. Habe das auch soweit hinbekommen, dass ich die Daten erstmal einlesen kann. Jetzt habe ich aber das Probleme, dass Umlaute nicht richtig dargestellt werden. Folgendes Beispiel:

function hex2str($hex) {
 $str="";
 for($i=0;$i<strlen($hex);$i+=2) {
  $str.=chr(hexdec(substr($hex,$i,2)));
 }
 return $str;
}

echo "TEST<br>";
$testStr = "2053f672656e";
$testStr = hex2str($testStr);
echo ">$testStr<";

Es sollte eigentlich >Sören< heißen. Gibt es eine elegante Methode das Problem zu lösen? Oder muss ich einen "Parser" schreiben wie:

f6 => ö
etc.

Danke für eure Hilfe schon mal.

  1. 0x00F6 ist in Unicode und ISO-8859-1 das "ö". Wenn Du aber das Byte  0xF6 in einer HTML-Seite ausgibst, die per Header als UTF-8 deklariert wurde, ist das Byte 0xF6 schlicht und ergreifend illegal und müßte als Zwei-Byte-Folge 0xC3, 0xB6 geschrieben werden, um das Zeichen "ö" zu bekommen. Entweder mußt Du die aus dem Hex-String gewonnenen Zeichen von ISO-8859-1 nach UTF-8 konvertieren oder -- wenn Du sicher bist, immer nur ISO-8859-1 im Hex-String zu haben -- die Seite als ISO-8859-1 deklarieren.

    Alexander

    1. Hi,

      oder du maskierst die Umlaute per htmlentities().

      In diesem Fall (sollte) das ö durxh &ouml; ersetzt werden.

      Johannes

    2. Super, vielen Dank.

      Ich habe jetzt einfach

      <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1" />

      an den Anfang geschrieben und jetzt ging es, danke!