2016-07-13 25 views
1

Ich brauche einen Weg, um ' und & in einer URL zu kodieren. Überprüfen Sie die folgenden Beispiele:Escaping 'und & und ähnliche Zeichen in url

// "get_records.php?artist=Mumford%20%26%20Sons" 
"get_records.php?artist=" + encodeURIComponent("Mumford & Sons"); 

// "get_records.php?artist=Gigi%20D'Agostinos" 
"get_records.php?artist=" + encodeURIComponent("Gigi D'Agostino"); 

encodeURIComponent nicht ' nicht kodieren. Ich kann stattdessen escape verwenden, aber es ist veraltet, denke ich. Was mache ich in diesem Fall? Erstellen Sie einen benutzerdefinierten Encoder?


Ich werde auch andere Charaktere werden zu entkommen: :, /, ., ,, ! zum Beispiel für die folgenden Strings

"11:59" 
"200 km/h in the Wrong Lane" 
"P.O.D." 
"Everybody Else Is Doing It, So Why Can't We" 
"Up!" 

So einen benutzerdefinierten Encoder zu schaffen scheint die beste Option . Gibt es einen alternativen Ansatz, den ich verwenden kann?

Antwort

1

Sie müssen diese Funktionalität selbst implementieren.

MDN deckt dieses genaue Thema ab. Erweitern Sie ihren Vorschlag, um die & Zeichen und andere als auch trival zu decken. (! Welche Reserven‘, (,), und *)

Um strenger zu sein, um RFC 3986 haften, obwohl diese Zeichen keine formalisierte URI abgrenzt Anwendungen haben, ist folgendes sicher verwendet:

function fixedEncodeURIComponent (str) { 
    return encodeURIComponent(str).replace(/[!'()*]/g, function(c) { 
    return '%' + c.charCodeAt(0).toString(16); 
    }); 
} 

Source

+0

scheint gut genug. Wahrscheinlich werde ich das benutzen. – akinuri