Manchmal muss man einen Fluss durchqueren, um zu sehn, dass es ganz in der Nähe eine Brücke gibt.
Ich habe versucht sämtliche Sonderzeichen die in meiner Firma so verwendet werden rauszufinden, damit ich diese dann gleich in HTML Entities umwandeln kann. Da unser Backend und Frontend ISO-8859-15 codiert ist, ließen sich die UTF-8 Strings nicht direkt in die DB schreiben.
Mit escape kann man die Daten vorm Senden UTF-8 encodieren. (bzw. URL encodieren). Im PHP nimmt man dies dann wieder entgegen mit rawurldecode(). Dann wird der Text durch folgende Funktion gejagt:
$suchmuster = '/(%u)(\w{4})/'; $ersetzung = '&#x$2;'; $inhalt = preg_replace($suchmuster, $ersetzung, $inhalt);
Die Ersetzen-Funktion sucht nach „%u“ und den darauf folgenden 4 Buchstaben/Zahlen. Ersetzt wird das %u mit „&#x„, was die Codierung für hexadezimale HTML-Entities ist, und dann werden die 4 Buchstaben/Zahlen also der Hexcode eingefügt. Abschließend noch ein Semikolon zum Schluss und fertig ist der UTF-8 Konverter.
Wichtig zu erwähnen wäre, dass „normale“ Umlaute, die sozusagen vom Zeichensatz unterstützt werden z.B. (ä,ö,ü) extra umgewandelt werden müssen. Bevor die Frage „Wozu das Ganze?“ auftaucht, in unserem Eingabefeld sind teilweise HTML-Entities und teilweise richtige Sonderzeichen. Wenn ich nun htmlentities() laufen lasse, wandelt er mir alles um auch bereits umgewandelte Zeichen wie ä.