Hi Gonzo,
Ich habe mal spaßeshalber eine Dekodierroutine gebastelt, die ohne externe Hilfen auskommt. So ganz trivial, wie ich dachte, war das mitsamt Fehlerprüfungen dann doch nicht …
WOW, nicht schlecht. Und schon mal besten Dank für das Angagement!
Doch leider funktioniert die Funktion bei mir nicht...
Folgendes habe ich getestet:
// Ich habe den Text auch testweise aus einer DB geladen, jedoch mit dem gleichen Ergebnis.
$text = "Test von Simon äöüßµ \par ENDE";
print utf8rtf($text);
Ausgabe: "{\uc0Test von Simon ????? \par ENDE}"
Ich habe in die Fkt mal verschiedene Ausgaben eingebaut um zu prüfen wo $x = false gesetzt wird.
Es scheint bei der Überprüfung zu passieren:
// Gelesenen Unicode-Wert prüfen
if (($x !== false) || ($i != $u["sequenz"] - 1) || ($x < $u["min"])) { // Fehlerhafte utf-8-Bytefolge: Keine Sequenz oder zu lang bzw. zu kurz oder einen Wert in einer zu großen Sequenz geparkt.
$x = false;
}
Die Datei ist als "UTF-8, no BOM" abgespeichert, die Seite mit UTF-8 Codierung ausgegeben. Wenn ich $text einfach ausgebe, ist es auch lesbar...
Hast du die Zeile
//$utf[] = Array("sequenz" => "1", "startmaske" => 128, "startcode" => 0, "min" => 0); // - ein Byte lässt sich gesondert schneller behandeln
absichtlich auskommentiert? Wenn ich sie nicht auskommentiere geht es jedoch auch nicht...
Irgend eine Idee was ich anders mache als Du?
Vielen Dank!
- Simon