2010-09-14 2 views
3

Я работаю над плагином браузера, который берет URL-адрес текущей страницы или любой выбранной ссылки в качестве параметра и отправляет ее на наш сервер. Когда символы основного латинского алфавита присутствуют в URL-адресе (например, http://en.wikipedia.org/wiki/Vehicle), плагин отлично работает. Однако, когда URL содержит символы из другого алфавита, такие как http://ru.wikipedia.org/wiki/Коляска, плагин не работает, я использую метод encodeURIComponent, но это, похоже, не решает проблему. Есть идеи?Как правильно кодировать URL-адрес в JavaScript?

Thanks,

Olivier.

+2

http://ru.wikipedia.org/wiki/Коляска действительно не действительный URL. Когда вы вводите это в современный браузер, он будет URLEncode символов автоматически. Можете ли вы более подробно объяснить, что вы делаете, откуда поступают данные, и что такое 'encodeURIComponent', что не подходит? Кроме того, что вы подразумеваете под «плагином браузера»? –

+1

Фон: http://stackoverflow.com/questions/2742852/unicode-characters-in-urls –

ответ

1

Возможно, вы захотите использовать encodeURI/decodeURI, если вы пытаетесь взять полный URI с символами, отличными от ASCII, и перевести их в свою кодированную форму. Они сохраняют специальные символы URI, такие как : и /, вместо того, чтобы убегать от них; он только ускользает от не-ASCII символов и символов, которые недопустимы в URI. Таким образом, они выполняют, по сути, то же самое, что печатать в адресной строке или помещать URI в <a href="..."> (хотя поведение может несколько отличаться от браузера и не совсем то же самое).

encodeURIComponent предназначен для кодирования только одного компонента URI, заменяющего специальные символы, которые имеют смысл в URI, так что вы можете использовать компонент в качестве параметра запроса или компонента пути в более длинном URI.

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