Кириллические символы в урле для location.search
Допускается ли использование кириллицы в url для передачи параметров для метода location.search?
Например урл: site.ru/page?id=0&title=слово Получаю такой результат с абракадаброй: const param = location.search.slice(1).split('&'); console.log(param); // ["id=0", "title=%D1%81%D0%BB%D0%BE%D0%B2%D0%BE"] Можно как то получить это значение корректно или кириллицу нельзя использовать в таких случаях? |
Цитата:
|
laimas, подскажите пожалуйста, что мне нужно сделать чтобы абракадабру перегнать опять в кириллицу?
Я урл распарсиваю и у меня значение для параметра с кириллицей получается абракадаброй. |
decodeURIComponent(location.search)а ещё если наплевать на ослика, можно юзать new URLSearchParams(location.search)что гораздо удобнее. |
Aetae,
Спасибо! Теперь работает правильно. |
Прошу опытных пользователей подсказать по такой ситуации. Я распарсиваю урл в массив объектов. Какие символы можно использовать в урле для разделения между элементами массива?
Например у меня урл: site.ru/page?id=0&title=слово??id=1&title=текст??id=2&title=test Я код полностью написал, но пока для разделения между элементами массива поставил по два знака вопроса ?? А есть ли какие рекомендации что использовать вместо моих ??, чтобы избежать возможных конфликтов? |
Странно, у вас кодировка страницы не совпадает с кодировкой URL?
Уберите вопросики вообще, передавайте парно, разбирая пары. |
Цитата:
А что значит "передавайте парно, разбирая пары"? Можете показать как должен быть такой урл: site.ru/page?id=0&title=слово??id=1&title=текст??id=2&title=test У меня title - это пользователи текстовую метку добавляют. Могут и вопросов туда натыкать, вот я и опасаюсь что некорректно может получиться. |
Если все в UTF, то какие проблемы с кириллицей?
Параметры (ключ-значение) в URL разделяются &, выдумывать что-то можно в том случае, если сложный составной параметр. Вопрос символ занятый тем более. key=var&key=var&key=var&key=var Разбить по & и получим все параметры, дальше разбиение по = ..... |
Цитата:
Цитата:
Просто мне нужно из урла получить массив объектов [{...}, {...}] Я вот так делаю: const parts = location.search.slice(1).split('??'); let params = []; for (let i = 0; i < parts.length; i++) { params[i] = parts[i].split('&').reduce((prev, current) => { const [name, value] = current.split('='); prev[name] = value; return prev; }, {}); } console.log(parts); console.log(params); |
Часовой пояс GMT +3, время: 05:23. |