Calocybe: strings bearbeiten

Beitrag lesen

Hello again

Schau mal nach escape()/unescape() auf <../../tecm.htm#a8>. Dafuer, dass das so nuetzliche Funktionen sind, wurden sie ziemlich zeitig in die Browser integriert.

Danke für die url aber so wie ich das lese, wandelt escape ein Leerzeichen auf keinen Fall in ein '+' um, sondern in '%20'. Damit kann dann CGI aber nichts anfangen, oder?

Ja stimmt. Normalerweise werden alle Zeichen, die in einer URL nichts zu suchen haben, durch %XX codiert, wobei XX der hexadezimale ASCII-Wert des Zeichens ist. Zusaetzlich darf das Leerzeichen aber auch durch ein + codiert werden. Deshalb ist aber %20 nicht falsch (20hex = 32dec = Leerzeichen). Wenn das CGI-Script nicht voellig stuemperhaft geschrieben ist, sollte es damit zurechtkommen. Man kann auch ein A durch %41 ersetzen (41hex = 65dec). Theoretisch macht das keine Probleme, aber da man es sowieso direkt in der URL angeben darf, sollte man es ruhig tun. (Es gibt zwar keine standardisierte Laengenbegrenzung fuer URLs, aber irgendwo macht ein Webserver trotzdem dicht.)

Wenn Du jetzt unbedingt das + da drin haben willst, musst Du eine Schleife ueber Deinen String bauen, wo Du dann eben nur die Nicht-Leerzeichen codierst. Eine Funktion, um auf die einzelnen Zeichen zuzgreifen (das ist in JS ziemlich umstaendlich, geht in C viel schoener), findest Du auf <../../tecl.htm#a7>.

Calocybe