dedlfix: RTF-Datei utf-8-codiert...

Beitrag lesen

echo $begrüßung;

Ich habe mit der Funktion ord() versucht die einzelnen Zeichen des Strings in die dezimal-Werte umzuwandeln. Das funktioniert nur leider nicht mit den Umlauten. Für "ä" bekomme ich anstatt 228 195 raus. Gleiches Problem mit öü und ß.

ord() arbeitet byteweise. Das nützt die bei UTF-8-Kodierung herzlich wenig. Eher ist da noch ISO-8859-1 zielführend, weil dessen Bytewerte den Unicode-Codepoints entsprechen. Allerdings bist du damit auf die 256 ISO-8859-1-Zeichen eingeschränkt.

Kann PHP mit UTF-8 Strings umgehen?

Jein, nicht wirklich. Es gibt einige Funktionen, die mit UTF-8 umgehen können, meist Konvertierfunktionen, aber im Allgemeinen wird erst PHP6 vollständig fähig sein, mit Mehrbyte-Kodierungen richtig umzugehen.

Wie kann ich ansonsten den dezimal-Wert ermitteln?

Du musst den Unicode-Codepoint kennen. Den kannst du aus der UTF-8-Bytesequenz zurückrechnen oder mit iconv ermitteln. Das kennt auch Unicode. Leider ist das nicht überall verfügbar.

Hätte nie gedacht das ich solche Probleme mit RTF bekomme... :(

RTF ist ein recht altes Format, und so wie es aussieht auf 7 Bit ausgelegt. Deswegen macht es wohl auch solche Umstände bei Unicode-Zeichen. Hast du schon mal gesucht, ob es da was für PHP gibt, das mit dieses Dateiformat und seinen Besonderheiten umzugehen vermag?

echo "$verabschiedung $name";