2016-07-13 6 views
1

Мне нужен способ кодирования как ', так и & в URL-адресе. Проверьте следующие примеры:Escaping 'и & и подобные символы в 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 не кодирует '. Вместо этого я могу использовать escape, но, как мне кажется, это устарело. Что мне делать в этом случае? Создать собственный кодер?


Я буду бежать других персонажей тоже: :, /, ., ,, !, например, для следующих строк

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

Так создавая пользовательский кодировщик кажется, лучший вариант , Есть ли альтернативный подход, который я могу использовать?

ответ

1

Вам придется реализовать эту функциональность самостоятельно.

MDN охватывает эту точную тему. Расширение их предложения, чтобы покрыть символ &, а также, должно быть, было бы тривальным. (! Запасы которого,», (,), и *)

Чтобы быть более строгими в соблюдении RFC 3986, даже если эти символы не имеют формализованные URI разграничивающие использования, можно безопасно использовать следующее:

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

Source

+0

Кажется достаточно хорошо. Наверное, я буду использовать это. – akinuri