Ich habe hier eine Website in ISO-8859–15 und möchte aus ihr Termine per iCal anbieten. Das sollte normalerweise gehen – die reine Angabe des verwendeten Charset machte aber Probleme. Also musst eine andere Lösung her…
UTF–8 sollte eine Menge einfacher machen: Waren im ASCII-System nur die Buchstaben vorgesehen, die der gemeine Amerikaner in seiner Unabhängigkeitserklärung benutzt hat, konnten die ISO-Standards auch Umlaute – aber eben immer nur die einer bestimmten Region der Welt: ISO-8859–15 enthält zum Beispiel die Umlaute für West-Europa inklusive Euro-Zeichen.
Bisher macht es aber nur alles komplizierter: Einige Systeme verlangen schon UTF‑8, während andere noch sehr gut in ISO laufen. Schickt man die Daten einfach so, kommen die Umlaute kaputt an. Will man eine richtige Brücke zwischen beiden Welten schlagen, muss man konvertieren.
In meinem Kalender (ISO-8859–15) war einfach im iCal-Template bei allen Angabe dazugeschrieben, dass es sich dabei um ISO handelt:
LOCATION;CHARSET=ISO-8859–15:Neumünster
Das hat aber nicht gereicht – Die Umlaute wurden immer falsch importiert. Auch das setzen des Headers in PHP hat nicht geklappt:
Header(„Content-Type: text/calendar; charset=ISO-8859–15“);
Also musste die Radikal-Lösung her: Der gesamte Export wird UTF‑8. Ich setze also den Header:
Header(„Content-Type: text/calendar; charset=UTF‑8“);
Und lasse das Charset aus dem Template raus. Dafür muss ich die Inhalte in PHP durch iconv schicken. Im Smarty-Template geht das dann so:
LOCATION:{„ISO-8859–15“|iconv:„UTF‑8“:$data.location}
Nun funktioniert der Export prima… bis der Web-Kalender auf UTF‑8 umgestellt wird…
Schreibe einen Kommentar