Was ist HybridEncoding?

Hybridencoding

Das Kunstwort Hybridencoding setzt sich aus den beiden Ausdrücken Hybrid und Encoding zusammen.

Entstehung

Der Ausdruck Hybrid hat zwei Herkunftsarten und zwei Bedeutungen. Zum einen stammt der Ausdruck Hybrid von dem lateinischen Fremdwort griechischen Ursprunges (Hybrida, -ae, m), ab und hat die Bedeutung von etwas Gebündeltem, Gekreuztem oder Gemischtem. Zum anderen lässt sich das Wort direkt aus dem Griechischen ableiten und bedeutet hochmütig, überheblich oder vermessen: siehe dazu auch Hybris. Die Herleitung inklusive Bedeutungswandel ist nicht geklärt.

Encoding bedeutet in der Informatik eine "Zeichencodierung"

Der Ausdruck Hybridencoding beschreibt eine Vermischung mehrerer Zeichencodierungen und wurde von einem Angestellten im Informatikbereich erdacht, während er gerade an dem Phänomen der vermischten Zeichenencodierungen in einer Datenbank verzweifelte.

Beschreibung

Grundsätzlich gibt es eigentlich keine vermischte Zeichencodierung, denn eine Datenbank oder Textdatei enthält immer nur eine einzige Zeichencodierung. Dennoch ist es unter bestimmten Umständen möglich, dass eine Datenbank mit der Zeichencodierung Latin1 eingerichtet wurde, aber auch UTF8-codierte Zeichen enthält.

Dieser Effekt tritt meist auf wenn eine Datenbank aus mehreren Quellen befüllt, oder Datenbanken unterschiedlicher Zeichencodierungen zusammengeführt werden ohne die Codierung zu beachten.

Beispiel, wie es zu Hybridencoding kommen kann:
Es besteht eine Datenbank, welche mit der Zeichencodierung UTF8 konfiguriert wurde. Diese Datenbank wird mit einem PHP-Skript befüllt, welches die Daten von zwei Webformularen erhält. Das PHP-Script erwartet die Daten latin1 codiert und konvertiert die Daten für die Übermittlung zur Datenbank zu utf8. Webformular A übermittelt die Daten korrekterweise Latin1 codiert, Webformular B übermittelt die Daten, durch ein falsch angegebenes Encoding, fälschlicherweise als UTF8.

Was passiert?

Webformular A sendet latin1 codierte Daten an das PHP-Script. Dieses konvertiert die Daten als utf8 und schreibt die Daten in die Datenbank welche auch UTF8 erwartet. Alles perfekt :)

Webformular B sendet, aufgrund des falsch angegebenen Encodings, UTF8 codierte Daten an das PHP-Script. Dieses erwartet aber Latin1 codierte Daten und verscuht nun die Daten in UTF8 zu konvertieren obwohl diese ja schon UTF8 codiert sind. Ein übermittelter Text wie zB: "Gärtnerstraße" würde in diesem Fall als "GärtnerstraÃ?e" in die Datenbank geschrieben werden. Somit wäre hier der klassische Fall des "Hybridencoding" in der Datenbank aufgetreten.

Werden die Daten der Datenbank nun exportiert, kommt es noch besser, beim Export als UTF8 würde also "GärtnerstraÃ?e" exportiert werden, macht man den Export als Latin1 würde "Gärtnerstraße" exportiert werden, da während dem Export die als UTF8 angenommenen Daten in Latin1 konvertiert werden.

Bemerkt man solche Unstimmigkeiten nicht sofort, bzw. werden eventuell noch verschiedene Datenbanken mit solchen "Hybridencodings" zusammengeführt, wird es praktisch unmöglich die Daten automatisiert zu korrigieren, was schon so manche Person die damit beruflich zu tun hat nahezu in den Wahnsinn getrieben hat ;)