dedlfix: automatische Kodierungserkennung? - aussichtslos

Beitrag lesen

echo $begrüßung;

Das Codieren mit mb_encode_mimeheader() muss berücksichtigen, wie die Zeichen bereits codiert sind, wenn sie Dein Script erreichen.
Der Funktion kann man doch die Ausgangscodierung als zweiten Parameter übergeben. Entweder weiß ich die, ansonsten kann mir mb_detect_encoding weiterhelfen.

Darauf würde ich micht nicht verlassen. Im Gegenteil, würde ich den Einsatz einer solchen Funktion für ein System, das komplett automatisch arbeiten soll, aufgrund der vielen Unwägbarkeiten nicht in Erwägung ziehen. Ihr Name verspricht viel mehr, als sie am Ende zu leisten vermag. Abgesehen von dem in den Userkommentaren der Handbuchseite zu mb_detect_encoding() erwähnten Fehler, der in PHP 5.2.6 auch noch enthalten ist, steht die MB-Erweiterung eventuell nicht überall zur Verfügung, was daran liegt, dass sie vor noch nicht allzulanger Zeit noch das Experimentell-Kennzeichen trug. Des weiteren ist eine Erkennung der Kodierung technisch bedingt nur mit sehr starken Einschränkungen und auch dann nicht in allen Situationen fehlerfrei möglich. Ein Dokument ist ja im Grunde genommen nichts weiter als eine Aneinanderreihung von Bytewerten. In einigen Kodierungen sind bestimmte Bytefolgen nicht erlaubt. Man kann deshalb ausschließen, dass ein Text in dieser Kodierung vorliegt. Doch jeglicher Multibyte-Text, einschließlich UTF-8, ist immer auch gültiger ISO-8859-x-Text. Eine Aneinanderreihung der einzelnen Bytes eines Zeichens aus einer Multibytekodierung ist in den meisten Fällen eine gültige ISO-8859-Kodierung. Selbst wenn Bytes auftauchen, die in einzelnen ISO-8859 nicht definiert sind, findet sich garantiert eine Windows-irgendwas-Kodierung, die diese Lücke auffüllt. Ganz vorbei ist es dann, wenn man zwischen den einzelnen ISO-8859-Kodierungen unterscheiden muss. Das Zeichen mit dem Bytewert 230 (0xE6) kann beispielsweise je nach Kontext æ, ć, ĉ, ц, ζ, ๆ, ę und noch zwei weitere Zeichen mit "falscher" Schreibrichtung bedeuten (die machte mir hier beim Zitieren Probleme, weswegen ich die beiden Zeichen wegließ). Ohne Inhaltsanalyse ist da nichts zu machen. Die dürfte für einen Menschen schwer genug ausfallen, wenn es sich, wie bei Email-Adressen nicht unüblich, um Zeichenkombinationen handelt, die nicht im Wörterbuch vorkommen. Steht dieser Funktion ein Wörterbuch sämtlicher Sprachen zur Verfügung? Wohl kaum. Die Intelligenz eines Computers ist also auch ziemlich überfordert, besonders bei so kurzen Texten, wie sie in Email-Headern üblicherweise stehen.

Im Firefox und sicher auch in anderen Browser gibt es eine Funktion, die die Kodierung zu erkennen versucht, wenn die Webseite oder der Server keine Angaben dazu mitliefert. Hier ist das Ziel, den dekodierten Text einem Menschen vorzulegen. Dieser kann dann immer noch entscheiden, dass die geratene Kodierung nicht stimmt und sich im Menü eine passendere auswählen. In deinem Anwendungsfall ist eine solche Korrekturmöglichkeit jedoch nicht vorgesehen.

echo "$verabschiedung $name";