HEX->String: Umlaute?
ingobar
- php
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.
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
Hi,
oder du maskierst die Umlaute per htmlentities().
In diesem Fall (sollte) das ö durxh ö ersetzt werden.
Johannes
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!