Versand, Großhandel und Online Shop – Vermittlung von Beratungen und Schulungen.

Weiterleitung eines Formulars von einer utf-8 page zu einer iso-8859 page

Am Anfang nur Zeichensalat

Die Ausgangsfrage: Wie schaffe ich es, ein Suchformular auf einer utf-8-kodierten WordPress-Seite so auf ein Suchformular eines xt-c-kompatiblen Shops (iso-8859-Codierung) weiterzuleiten, dass

  • nach Suche im WP-Blog außer einem Klick auf „Suchen im Shop“ keine weiteren Eingaben erforderlich sind und
  • die Weiterleitung des Suchbgegriffes auch mit Umlauten funktioniert?


Kurz nach Einbau des zusätzlichen Formulars ins WP-Blog (search.php, searchform.php) mit dem Aufruf „action=…/advanced_search_result.php“ gab es bei Umlauten nur Zeichensalat des auf das Shop-Formular weitergeleiteten Suchbegriffs. Ohne Umlaute schien es dagegen zu funktionieren.

Über Fehler und verschiedene Ansätze in die richtige Richtung

Zunächst wurde mit der PHP-Funktion utf8_decode() versucht, das zusätzliche Suchfeld noch vor dem Absenden umzukodieren, was natürlich gründlich misslang.

Danach gab es im aufgerufenen Suchscript des Shops, das ja schließlich die Daten empfängt und verarbeitet, mehrere Versuche, über if-Abfragen festzustellen, von wo das Script aufgerufen wurde und danach die Behandlung von utf-8-codierten Zeichenketten als Sonderfall einzurichten.

Außer in der Theorie funktionierte auch das nicht, zumal auf der Shopseite nicht nur ein einfaches Formular sondern ein recht komplexes System von Scripts lag. Die if-Bedingungen auf per GET übertragene Variablen waren zum Beispiel trotz Löschen der Variablen nach Verarbeitung scheinbar immer noch als „wahr“ gegeben, so dass man nach einer utf-8-String-Verarbeitung bei weiteren Aufrufen des Scripts im Shop wieder nur Zeichensalat bekam.

Ein anderer und sehr simpler Ansatz war das Codieren via Form-Attribut accept-charset=“ISO-8859-1″ im Formualraufruf auf der WordPress-Seite (s.a. SELFHTML). Das veranlasste zumindest den Firefox-Browser zur einwandfreien Weitergabe der Umlaut-Strings an das Shop-Script – welch ein Wunder nach mehr als einem Tag des Herumprobierens! Nur der IE8 machte da nicht mit.

Suche im Blog

Suche im Blog

Die vorläufig endgültige Mischlösung

Da der IE8 bei der Einfachstlösung nicht mitspielte, musste wieder etwas weniger Einfaches probiert werden.

Als gangbarer Weg stellte sich eine Funktion heraus, die in das Search-Script des Shops (advanced_search_result.php) eingebaut wurde:

Direkt nach:
/*  check search entry
*/

Fortsetzung der Suche im Shop

Fortsetzung der Suche im Shop

kommt nun:

————————————————————————-
function convEncoding($in_str)
{
$is_encoding = mb_detect_encoding($in_str) ;
if($is_encoding == "UTF-8" && mb_check_encoding($in_str,"UTF-8"))
return utf8_decode($in_str);
else
return $in_str;
} // convEncoding

$_GET[‚keywords‘] = convEncoding($_GET[‚keywords‘]);

———————————————————————

Das „Ding“ macht nicht viel, außer bei einem utf-8-codierten Search-String, den es zweimal auf utf-8-Eigenschaften überprüft. Wenn es den eindeutig findet, wandelt es den ganzen String in einen nach iso-codierten Text um und mehr nicht.

Von den immer komplexeren Lösungansätzen zur Einfachheit – ein Ideal, das wir auch oft im Feng Shui anstreben.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.