- Почему decodeURIComponent (‘%’) блокирует мой браузер?
- 6 ответов
- decodeURI не работает с текстом innerHTML
- 2 ответа
- decodeURI not fully working
- 3 Answers 3
- Not the answer you’re looking for? Browse other questions tagged javascript jquery or ask your own question.
- Related
- Hot Network Questions
- Subscribe to RSS
- decodeURI не полностью работает
- 3 ответа
- Похожие вопросы:
- URLDecoder.decode не работает должным образом
- 2 ответа
Почему decodeURIComponent (‘%’) блокирует мой браузер?
Я просто что-то тестировал с AJAX и обнаружил, что в случае успеха
Браузер выдает ошибку с помощью следующего кода.
Если я использую любую другую строку, она отлично работает.
Это то, что я пропустил?
6 ответов
Хром барфы при попытке с консоли. Это дает URIError: URI искажен. % Является escape-символом, он не может быть сам по себе.
Недавно в моем коде decodeURIComponent споткнулся об амперсанд % , и поиск в Google привел меня к этому вопросу.
Вот функция, которую я использую для обработки % , которая короче версии Ilia:
- возвращает входное значение без изменений, если вход пустой
- заменяет каждое % НЕ, а затем двузначное (шестнадцатеричное) число на %25
- возвращает декодированную строку
Это также работает с другими образцами здесь:
- decodeURIComponentSafe(«%%20Visitors») // % Visitors
- decodeURIComponentSafe(«%Directory%20Name%») // %Directory Name%
- decodeURIComponentSafe(«%») // %
- decodeURIComponentSafe(«%1») // %1
- decodeURIComponentSafe(«%3F») // ?
Бесконечный цикл или блокировка могут быть из-за ошибки в jquery.
Вы можете установить точку останова в jquery в точке, которая, вероятно, вызывает «блокировку».
Декодирование не имеет смысла только с предоставленным % , поскольку percent-encoding сопровождается буквенно-цифровыми цифрами, относящимися к заданному символу в таблице ASCII, и обычно должно приводить к ошибке URIError в Opera, Chrome, FF.
Используйте встроенную в браузер функцию encodeURI , если вы ищете «закодированное по URL» обозначение символа процента:
И decodeURI(‘%’) , и decodeURIcomponent(‘%’) не могут работать, потому что URL имеет неправильный формат (один% недопустим в качестве компонента url или url)
Проблема в том, что вы пытаетесь декодировать % . Это недопустимая закодированная строка. Я думаю, что вы хотите кодировать % .
Дело в том, что если вы используете одиночный % , он нарушает логику функции decodeURIComponent() , так как ожидает двухзначное значение данных, следующее сразу после него, например %20 (пробел).
Вокруг есть взлом. Сначала нам нужно проверить, действительно ли decodeURIComponent() может работать с данной строкой, а если нет, вернуть строку как есть.
Пример:
Приведет к ошибке Uncaught URIError: URI malformed
Вернет начальную строку.
В случае, если вы хотите иметь фиксированный / правильный URI и превратить % в %25 , вы должны передать 1 в качестве дополнительного параметра пользовательской функции:
Источник
decodeURI не работает с текстом innerHTML
Я пытался декодировать текст, поэтому я могу использовать unescape JSON-кодировку. Но я не могу приступить к работе, когда значение переменной — innerHTML, но оно работает, когда я жестко закодирую то же строковое значение для переменной.
Пример innerHTML (мне нужна помощь с)
Ожидаемый результат: декодированный URI: C: \ Users \ User \ Documents \ Fax
Рабочий пример с жестко заданным значением
Фактический результат: декодированный URI: C: \ Users \ User \ Documents \ Fax
Что я делаю не так?
2 ответа
Фактически устанавливает uri на C:\Users\User\Documents\Fax . Так как вы просто создаете строку с обратной косой чертой.
Устанавливает uri в C:\\Users\\User\\Documents\\Fax с двумя обратными слешами в каждой позиции.
Если вы хотите, чтобы строковое решение велось так же, вам нужно снова избегать обратной косой черты при создании строки. (т.е. var uri = «C:\\\\Users\\\\User\\\\Documents\\\\Fax»; )
Чтобы ваша первая версия работала так же, как вторая в настоящее время, вы можете использовать замену RegEx, чтобы изменить C:\\Users\\User\\Documents\\Fax на C:\Users\User\Documents\Fax (или, если это возможно, просто измените элемент html, чтобы он содержал <
Решение RegEx:
Чтобы проанализировать все экранированные символы ( \\ , \n , \r , \t , . ):
Используйте закодированный URI для декодирования, если нет, мы не увидели разницу.
Источник
decodeURI not fully working
I’m trying to remove the URI encoding from a link, but decodeURI doesn’t seem to be fully working.
My example link is this: /linkout?remoteUrl=http%253a%252f%252fsandbox.yoyogames.com%252fgames%252f171985-h-a-m-heroic-armies-marching
After running the JavaScript script, it looks like this:
How can I get rid of the remaining not correct codes in the URI?
My decoding code:
3 Answers 3
the url looks as it was encoded twice, I also suggest to use decodeURIComponent
results in: «http://sandbox.yoyogames.com/games/171985-h-a-m-heroic-armies-marching»
but you should check why you have the url encoded twice in advance
I just encountered this situation in an ASHX handler for the PUT verb. ASP.NET is apparently encoding my XML for me, so my server-side call to HttpUtility.UrlEncode was not needed. Fixing it by calling client-side Javascript decodeURI twice — is closing the barn door after the cows have already left and the HTTP I was sending was a protocol violation.
I would have commented and plus-one’d Tobias Krogh’s answer, but I don’t have the points to do so…
However, I still think that it is important to note that the failure being discussed here is not a Javascript decodeURI or anything else — it is a data validation error.
My implementation is a recursive function:
- str : encoded string.
- maxInterations : Maximum recursive iterations to try decoding str (default: 30 ).
- iterations : Flag counter iteration.
Not the answer you’re looking for? Browse other questions tagged javascript jquery or ask your own question.
Related
Hot Network Questions
Subscribe to RSS
To subscribe to this RSS feed, copy and paste this URL into your RSS reader.
site design / logo © 2021 Stack Exchange Inc; user contributions licensed under cc by-sa. rev 2021.10.15.40479
By clicking “Accept all cookies”, you agree Stack Exchange can store cookies on your device and disclose information in accordance with our Cookie Policy.
Источник
decodeURI не полностью работает
Я пытаюсь удалить кодировку URI из ссылки, но decodeURI, похоже, не работает полностью.
Мой пример ссылки таков: /linkout?remoteUrl=http%253a%252f%252fsandbox.yoyogames.com%252fgames%252f171985-h-a-m-heroic-armies-marching
После запуска скрипта JavaScript он выглядит следующим образом:
Как я могу избавиться от оставшихся неправильных кодов в URI?
Мой код декодирования:
3 ответа
decodeURI(‘hello%20world’) дает hello world , но decodeURI (‘hello+world’) дает hello + world Есть ли способы декодировать данные, содержащие + вместо %20?
Я пытаюсь получить декодированное значение для строки. Я замечаю, что decodeURI (я не использую unescape, потому что где-то читал, что он устарел) работает, когда я делаю document.write(), но предупреждение все еще показывает недекодированное значение. var uri = Hello’s ; var dec =.
url выглядит так, как он был закодирован дважды, я также предлагаю использовать decodeURIComponent
результаты в: «http://sandbox.yoyogames.com/игры/171985-h-a-m-heroic-armies-marching»
но вы должны проверить, почему у вас есть url, закодированный дважды заранее
Я только что столкнулся с этой ситуацией в обработчике ASHX для глагола PUT. ASP.NET, по-видимому, кодирует мой XML для меня, поэтому мой вызов на стороне сервера HttpUtility.UrlEncode не был нужен. Исправить это , дважды позвонив на сторону клиента Javascript decodeURI-это закрыть дверь сарая после того, как коровы уже ушли, и HTTP, который я отправлял, был нарушением протокола.
Я бы прокомментировал и плюс один ответ Тобиаса Крога, но у меня нет для этого очков…
Тем не менее, я все еще думаю, что важно отметить, что обсуждаемый здесь сбой не является Javascript decodeURI или чем-то еще-это ошибка проверки данных.
Моя реализация-это рекурсивная функция:
- str : закодированная строка.
- maxInterations : максимальное количество рекурсивных итераций для декодирования str ( по умолчанию: 30 ).
- iterations : итерация счетчика флагов.
Похожие вопросы:
У меня есть струна, что-то вроде Bob\u0027s Burgers decodeURI , похоже, не превращает этот \u0027 в Апостроф, как это должно быть. По сути, он просто оставляет его в покое. encodeURI , кажется.
У меня есть следующая переменная: var string=Mazatl%E1n; Строка возвращается таким образом сервером. Все, что я хочу сделать, это расшифровать это в: Mazatlán . Я попробовал следующее: var.
Код: Ошибка: Line: 6 Error: The URI to be decoded is not a.
decodeURI(‘hello%20world’) дает hello world , но decodeURI (‘hello+world’) дает hello + world Есть ли способы декодировать данные, содержащие + вместо %20?
Я пытаюсь получить декодированное значение для строки. Я замечаю, что decodeURI (я не использую unescape, потому что где-то читал, что он устарел) работает, когда я делаю document.write(), но.
Я хотел бы использовать decodeURI или decodeURIComponent , как в JavaScript в моем проекте Lua (Luvit) . JavaScript: decodeURI(‘%D0%BF%D1%80%D0%B8%D0%B2%D0%B5%D1%82’) // result: привет Лувит.
Я хотел бы некоторую помощь с расшифровкой. Заданный параметр: \u00c4 (реальный ключ)) Ключ упакован в параметр с именем: reboundContent[2][id] ( \u00c4 ) reboundContent[2] [id] считывается из базы.
Я предполагаю, что это что-то простое. Тем не менее, я пытаюсь обработать ленту новостей RSS, и в заголовке и описании есть некоторые экранированные символы HTML, в частности ‘., у меня было.
Я пытался декодировать текст, так что могу взять кодировку unescape JSON. Но я не могу приступить к работе, когда значение переменной равно innerHTML, но оно работает, когда я жестко кодирую одно и.
Источник
URLDecoder.decode не работает должным образом
Я пытаюсь передать строку поиска из внешнего интерфейса javascript в контроллер java, который обращается к другому API.
Все работало, кроме строки со специальными символами, например «test + 123».
Они используют «utf8» (UrlDecoder.decode (string, «utf8»);)
Я тестировал только с помощью только javascript encode , который превращает мою строку «test + 123» во что-то, что вызывает кучу правильных результатов.
Мой регистратор заявляет, что поиск правильной строки поиска.
Пример «test + 123»: без кодирования javascript -> «test 123»
С JavaScript кодировать -> «тест + 123»
С Java декодировать -> Нет результата?
Мой код Javascript выглядит так:
Мой код Java выглядит так:
Я проверил отладчик и мой регистратор правильный, encodedSearchString не закодирован.
Я не написал никакого другого кода, касающегося кодирования или декодирования, я не вижу, чтобы это происходило где-либо еще в коде. Я использую spring mvc, maven и intellj , если это имеет значение.
2 ответа
Интересная причина, по которой это не давало правильных результатов, — это сама технология.
Spring MVC содержит собственный декодер, который автоматически включается (его необходимо отключить вручную), см. http://docs.spring.io/spring/docs/current/spring-framework-reference/html/mvc.html
Цитата из вышеупомянутой ссылки «urlDecode По умолчанию true, начиная с Spring 2.5. Если вы предпочитаете сравнивать закодированные пути, установите для этого флага значение false. Однако HttpServletRequest всегда предоставляет путь сервлета в декодированном виде. Имейте в виду, что путь сервлета не будет совпадать при сравнении с закодированными путями. «
По сути, под ним было что-то невидимое. Таким образом, декодирование строк сообщения не является необходимым.
Может быть, синтаксис должен быть UTF-8 вместо utf8?
Источник