Gestern hat mich ein ganz besonderer Buchstabe in den Wahnsinn getrieben: Das ℮! Nicht das jemand glaubt, e = ℮. Denn wenn man genau hinsieht, dann ist
e ≠ ℮
Es handelt sich nämlich hierbei um das sog. “estimated e” auf Verpackungen. Dieses ist ein Sonderzeichen, welches Windows, Mac und Linux eigentlich unbekannt ist und sich in Word und HTML aber herbei zaubern lässt. Des Rätsels Lösung lautet Unicode: Hier hat das Estimated Symbol die Position 8494 bzw. U+212e und dementsprechend die HTML-Entität ℮ bzw. ℮.
Wenn jetzt dieses “magische e” in einem HTML-Formular eingegeben wird und das Formular in PHP weiterverarbeitet wird, hat man ein Problem. Denn wie ich nach langem Suchen herausfinden konnte, wird dieses magische e bereits vom Browser in die numerische HTML-Entität umgewandelt, bevor der Request an den Server übermittelt wird. Herausfinden konnte ich das im Übrigen mit der genialen Firefox-Erweiterung “Live HTTP-Headers“.
Zurück zu meinem Problem: Es wurde also in einem HTML-Formular dieses böse ? eingegeben und diese Eingabe sollte später in einer E-Mail-Benachrichtigung ihren Platz finden. Da bereits der Browser die Umwandlung in eine HTML-Entität durchführte, musste diese nun PHP-seitig wieder rückgängig gemacht werden. Leichter gesagt als getan. Denn eine String-Konvertierung mittels mb_convert_encoding führte nicht zum Ziel. Egal, ob ich nach ISO-8859-1, ISO-8859-15, Windows-1252 oder auch UTF-8 konvertierte, das Ergebnis blieb das gleiche: Aus ℮ wurde ℮
Nach Rücksprache mit dem Kunden habe ich dann eines gemacht:
$msg = str_replace('℮','e',$msg); |
Da das ℮ kaum von einem normalen e zu unterscheiden ist, steht zukünftig ein normales e in den Benachrichtigungs-Mails geschrieben.
Die letztendliche Implementierung hat nicht lange gedauert. Die Suche, warum sich das ℮ so seltsam verhält, allerdings über zwei Stunden 🙁
Pingback: Ich bin relevant ;-) « Software-Wahnsinn