Tach!
ich habe ein Formular über das ich eine Textvariable sende.
Variablen senden? Was genau meinst du. Variablen existieren nur in deinem Script. Von und zum Browser gibt es nur Text. Ob du den aus einer Variable liest oder in eine schreibst, ist nicht weiter relevant. Relevant ist nur, was das für ein Text ist. Wie wird er erzeugt? Ist er dabei so zeichenkodiert, wie für den Empfänger angegeben wurde?
anschliessend kommen leider nucr Sonderzeichen herraus.
Anscheinend nicht.
nach der Übergabe kommt: �����
mb_detect_encoding($string); sagt utf8.
Lass dir mal den Inhalt mit bin2hex() anzeigen, oder besser noch mit urlencode(), das lässt die lateinischen Grundbuchstaben unangetastet. Ziel ist, die Bytes der Zeichen zu sehen, um daraus Rückschlüsse zur Kodierung ziehen zu können.
Andererseits ist die Lösung für das Problem generell, die Angaben zur Zeichenkodierung korrekt zu setzen und auch den Inhalt dementsprechend zu kodieren. Das muss man an allen Stellen tun, wo Daten von einem System in ein anderes übergeben werden.
Da das ein Thema ist, das sich ohne grundlegendes Wissen lediglich zufällig richtig verhält, verweise ich mal auf Grundlagenliteratur: Wiki-Seite zur Zeichenkodierung. In der Einleitung sind weitere Seiten verlinkt, die sich mit den Details für die im Web verwendeten Dinge beschäftigt.
dedlfix.