utf8: Umlaute ok, aber get-& im Formular klappt nicht

Fragen zu allen Themen rund ums Programmieren außerhalb von phpBB können hier gestellt werden - auch zu anderen Programmiersprachen oder Software wie Webservern und Editoren.
Antworten
webazubi
Mitglied
Beiträge: 96
Registriert: 30.07.2005 01:13

utf8: Umlaute ok, aber get-& im Formular klappt nicht

Beitrag von webazubi »

Hallo. Seit ich glaube rc3 habe ich Probleme mit Links zu externen Seiten, was wohl mit dem Zeichensatz zu tun hat: Statt einzelne Elemente eines Formulars mit dem &-Zeichen zu verknüpfen, steht bei mir jetzt immer %C2%A0.
Alle Umlaute laufen bei mir super. Datenbank ist utf-8 codiert und die Language-Dateien bzw. meine meine eigenen mit dem UTF-8 ohne BOM gespeichert (gilt das eigentlich nur für die Language-Dateien, oder auch für eigene php- bzw. html-Dateien?)
Aber nun habe ich ein Formular wie

Code: Alles auswählen

<form action="http://meinedomain" target="_blank" method="get" name="test1" >	
<input type="hidden" name="language" value="de" />
<input type="hidden" name="sessionID" value="0" />
<select name="name_destination">{MEINE_VARIABLE}</select> 
<input type="hidden" name="type_destination" value="stop" />
<input  type="submit" name="submit" value="Los" />
</form>
"Früher" wurde artig der Link gesetzt und die einzelnen Input-Felder mit dem &-Zeichen verbunden, also

Code: Alles auswählen

http://meinedomain&language=de&sessionID=0&place_dm=Suchort&type_dm=stop
Doch nun wird das & ersetzt durch %C2%A0 und heraus kommt, zumindest bei Firefox:

Code: Alles auswählen

language=de%C2%A0sessionID=0%C2%A0place_dm=Bremen%C2%A0name_dm=Zum%20Huchtinger%20Bhf.%C2%A0type_dm=stop
Das führt zu einem Fehler. Im Explorer wird statt der Zeichen ein Freizeichen gesetzt, was natürlich auch falsch ist.

Woran liegt das? Wie kann ich das ändern?
Ein ähnliches Problem trifft auch auf Umlaute zu, die per Formular übergeben werden sollen.
accept-charset="utf-8" im Formular bringt nichts. Auch verschiedene Dekodierungsfunktionen hatte ich bereits getestet.

Nachtrag: Opera kriegt das hin mit dem &-Zeichen.


Und noch ein Nachtrag:
Bei normalen Links (also nicht Formulare) hatte ich alle &-Zeichen durch das &nbsp; ersetzt, was zu dem gleichen, oben beschrieben Fehler führte. Wenn ich das &-Zeichen stehen lasse und nicht ersetze klappt der Link.
Highwayman
Mitglied
Beiträge: 549
Registriert: 21.04.2005 15:52
Wohnort: Thailand
Kontaktdaten:

Beitrag von Highwayman »

Die Langdateien mit ANSI und zusätzlich UTF8 ohne BOM!

Probiere dies mal aus, am besten mit Notepad+++
webazubi
Mitglied
Beiträge: 96
Registriert: 30.07.2005 01:13

Beitrag von webazubi »

Highwayman hat geschrieben:Die Langdateien mit ANSI und zusätzlich UTF8 ohne BOM!
Die Language-Dateien hatte ich noch gar nicht angefasst. Muss ich denn meine php bzw. html-Datei auch mit UTF8 ohne BOM speichern? Hab ich versucht, bringt aber nichts.

Ich habe eine Tabelle in utf-8, darin das Wort "österliche Grüße".
In einer test.php frage ich die Tabelle ab und lass mir mit echo ausgeben: "österliche Grüße" kommt dabei raus.
Nun will ich die Umlaute konvertieren, aber bereits bei dem Befehl

Code: Alles auswählen

teststr = ereg_replace("ö","x",$testwort);
wird kein ö gefunden.
Auch bei ereg_replace("&ouml;","x",$testwort); wird nichts gefunden.
ereg_replace("%C3%B6","x",$testwort) bringt auch nichts.

Wenn ich dieses Testwort nun an das template übergebe, wird zwar auch in der HTML-Datei "österliche Grüße" angezeigt, aber wenn ich daraus einen Link mache kommt nach dem Klick im neuen Zielfenster des Links raus:
%C3%B6sterliche%20Gr%C3%BC%C3%9Fe
Egal ob die test.php sowie die Test-Template-Datei utf-8 oder Standard-Ansi gespeichert ist.
Das alles klappt auch nur im Firefox. Im Explorer kommt bereits bei dem ersten echo:
österliche Grüße
Probiere dies mal aus, am besten mit Notepad+++
Ich hatte das mit UltraEdit gemacht


NACHTRAG;
Wenn ich mein Testwort direkt mit der Funktion urlencode($testwort); ausgeben lasse, kommt gleich als Ergebnis
%C3%B6sterliche+Gr%C3%BC%C3%9Fe
Antworten

Zurück zu „Coding & Technik“