Процентное кодирование в window.location

Когда я открываю URL-адрес со специальными символами, используя window.location, он, кажется, процентно кодирует специальные символы, а затем открывает URL-адрес. Например

var url = "http://gramfeed.com/instagram/tags/kühl";
window.location = url;

Это приведет к открытию страницы с URL:

http://gramfeed.com/instagram/tags/k%C3%BChl

вместо:

http://gramfeed.com/instagram/tags/kühl

Как сделать, чтобы URL-адрес открывался правильно без символов, закодированных в процентах

Вот jsfiddle для игры с кодом: http://jsfiddle.net/krisrak/aSkMR/


person krisrak    schedule 26.08.2013    source источник
comment
процентное кодирование было вызвано в коде сервера python, исправлено в javascript с помощью decodeURIComponent и замены в window.location.hash   -  person krisrak    schedule 28.08.2013


Ответы (2)


Я не думаю, что проблема в windows.location и вашем JavaScript. Проблема скорее в том, как gramfeed.com интерпретирует теги. Попробуйте это в своем коде:

var url = "https://www.google.com/search?q=kühl"
window.location = url;

Следите за тем, чтобы специальные символы оставались непреобразованными.

Теперь попробуйте ввести http://gramfeed.com/instagram/tags/kühl прямо в адресную строку браузера — URL-адрес преобразуется.

person Yuriy Galanter    schedule 26.08.2013
comment
Мой плохой, я думаю, что вы правы. Я конвертирую и перенаправляю URL-адрес в код Python, не уверен, почему это процент кодирования специальных символов: url = self.request.path.replace('/'+TAG_NAME, '#'+TAG_NAME) self.redirect(url) - person krisrak; 28.08.2013
comment
исправлено в javascript с помощью decodeURIComponent: var tag_name = decodeURIComponent(window.location.hash.substring(1)); window.location.hash = имя_тега; - person krisrak; 28.08.2013

Я тоже столкнулся с этой проблемой, но это была совершенно другая проблема, хотя симптомы были такими же. В конце концов выяснилось, что я перенаправлял на URL-адрес веб-сайта для настольных компьютеров, но для мобильных устройств он был перенаправлен на их сервер на их мобильный сайт, и именно тогда он был дважды закодирован.

Поэтому всегда стоит пытаться перенаправить на мобильный сайт напрямую, если это возможно, и на мобильном устройстве.

Надеюсь, это поможет кому-то еще :)

person sidonaldson    schedule 16.08.2016