Für eine Web-Applikation bei uns im Geschäft musste ich einen Link auf eine Seite mit PHP und Javascript erstellen. An sich kein Problem, nur musste ich in der URL einige Parameter mit Umlauten und Sonderzeichen übergeben, also musste ich den Parameter richtig umwandeln. Mit PHP geht das recht simpel mit der Funktion urlEncode() nur in Javascript gibt es da keine Funktion die einen String genau gleich maskiert.
Zwar gibt es die Funktionen encodeURI() und encodeURIComponent(), nur wandeln die die Zeichen etwas anders um:
Also habe ich mir selber eine Funktion gebastelt, die den String zuerst mit espace() maskiert und danach noch gewisse Sonderzeichen mit replace() richtig umwandelt.
Das Resultat sieht dann folgendermassen aus:
Zwar gibt es die Funktionen encodeURI() und encodeURIComponent(), nur wandeln die die Zeichen etwas anders um:
Original: test: äöü +?&% -*'() PHP urlEncode(): test%3A+%E4%F6%FC+%2B%3F%26%25+-%2A%27%28%29 JS encodeURI(): test:%20%C3%A4%C3%B6%C3%BC%20+?&%25%20-*'() JS encodeURIComponent(): test%3A%20%C3%A4%C3%B6%C3%BC%20%2B%3F%26%25%20-*'()
Also habe ich mir selber eine Funktion gebastelt, die den String zuerst mit espace() maskiert und danach noch gewisse Sonderzeichen mit replace() richtig umwandelt.
function urlEncode(str)
{
return escape(str).replace(/\+/g,'%2B').
replace(/%20/g,'+').replace(/@/g,'%40').
replace(/\*/g,'%2A').replace(/\//g,'%2F');
}Das Resultat sieht dann folgendermassen aus:
Original: test: äöü +?&% -*'() PHP urlEncode(): test%3A+%E4%F6%FC+%2B%3F%26%25+-%2A%27%28%29 JS urlEncode(): test%3A+%E4%F6%FC+%2B%3F%26%25+-%2A%27%28%29
