Hi,
mir ist gerade ein Problem aufgefallen von ich gar nicht wusste so eines zu haben. Bei der Ursachenforschung fand ich hier einen Thread mit der gleichen Problematik:
http://forum.de.selfhtml.org/archiv/2000/7/t17178/
Zunächst mal grundsätzlich zu Sonderzeichen, bisher dachte ich die Form wäre "&irgendwas;". Den Gedanken muss ich wohl abhaken, denn sowohl IE als auch FF benötigen nicht zwingend das Semikolon am Schluss, was mich erstmal zur Frage bringt, warum nicht?
Ok, da ich nun darauf vorbereitet bin, muss ich wohl davon ausgehen, jeder Browser versucht ein Sonderzeichen zu finden wenn auf ein "&" direkt etwas folgt. Das kann aber auch zu weit gehen, wenn wie im Link der IE aus "®ion=" => "®ion=" macht.
Nun habe ich den Forumsbeitrag natürlich gelesen und nicht ganz verstanden,
weil Calocybe schreibt:
Du musst korrekterweise schreiben: href="file.php3?land=xyz®ion=abc"
Nur, so hatte der OP das doch sowieso gemacht, oder nicht?
Was ich sonst aus der Aussage von Calocybe interpretiere ist, dass man wohl auch "&" und "=" in solchen Parameterstrings codieren soll?
Wenn dem so ist frage ich mich natürlich warum zb. Google das nicht macht, denn bsp. http://www.google.de/search?hl=de&q=pfalz&start=50&sa=N
Jetzt kommt natürlich bei den Googleparametern kein "region" vor, somit war wohl noch nie dort ein Problem vorhanden, denn seltsamerweise dachte ich wenn der IE das bei "®ion" macht, müsste er das ja auch bei "&tradeion" machen also das Trademarkzeichen, tut er aber nicht.
Fragen:
1. "&" und "=" codieren?
- Falls ja, in "%26" und "%3D"?
-
- Falls ja, ist denn darauf Verlass, dass ein Script solch ankommenden Strings sauber wieder erkennt? Denn hier kann es durchaus sein, dass einzelne Parameter gewollt codiert sind und es auch bleiben sollen.
2. Macht Google es falsch?
Zu PHP (Musste mich leider für einen Themenbereich entscheiden, obwohl es beide betrifft, Mehrfachauswahl wäre manchmal wünschenswert)
Normalerweise erzeuge ich solche Strings so:
*nur vom Prinzip her, in echtem Code natürlich anders!
url?a=rawurlencode('wert1')&b=rawurlencode('wert2').....
Beim Empfang nehme ich dann die Paare und verarbeite sie wie gewünscht weiter, also entweder raw oder decodiert. Wenn ich aber nun gezwungen wäre die Trenner & und = auch zu codieren, was dann?
Oder mache ich schon mal grundsätzlich etwas falsch?
Tim