2013-07-24 5 views
0

при попытке кодировать URL-адресJS URL кодирования

http://www.example.com/events/tours/example-tour/?utm_source=example&utm_medium=banner

он возвращает мне следующее:

HTTP% 3A% 2F% 2Fwww.example.com% 2Fevents% 2Ftours% 2Fexample-tour% 2F% 3Futm_source% 3Dexample% 26utm_medium% 3Dbanner% 20

, который не является действительным URL-адресом, поскольку он не может быть вызван в браузерах и ведет к поиску Google (Chrome, вы знаете?)

Как я могу кодировать URL, возможно, используя только JS?

ответ

1

правильный путь в JavaScript для кодирования URL правильно это

encodeURIComponent(); 

который дает

http%3A%2F%2Fwww.example.com%2Fevents%2Ftours%2Fexample-tour%2F%3Futm_source%3Dexample%26utm_medium%3Dbanner 

затем

decodeURIComponent(); 

на другой стороне, чтобы декодировать URL снова сделайте это действительным.

encodeURIComponent не является допустимым URL-адресом, потому что вы передаете кодировку как переменную GET.

как

http://www.site.com/index.php?url=http%3A%2F%2Fwww.example.com%2Fevents%2Ftours%2Fexample-tour%2F%3Futm_source%3Dexample%26utm_medium%3Dbanner 
+0

, так как только Chars как «&» и «=» должны получить кодированный бы вы рекомендовали сделать простой замены? – codedrop

+0

Я всегда иду с encodeURIComponent, если передаю URL как переменную GET, но я точно не знаю, чего вы хотите достичь. – cocco

+0

Я локализую некоторые баннеры, основанные на XML, и при извлечении URI и его кодировании URI нарушается. Применил замену исправления и работает как прелесть для меня. – codedrop

Смежные вопросы