URIError: malformed URI sequence
Всем привет.
Делаю сайт мобильный на jquery.mobile 1.2.0. И столкнулся с такой проблемой. Когда запускаю поиск по сайту и в Get параметры уходит слово прошедшее через urlencode, перестает работать кнопка назад в браузере. Генерится ошибка URIError: malformed URI sequence. Урл выглядит примерно так: /search/index.php?q=%EC%EE%EB%EE%F2%EE%EA&s=y Погуглив, я нашел объяснение, что скрипт ругается на знак процента в урле. Но как решить эту проблему так и не понятно. Никто не сталкивался? |
Цитата:
|
console.log( decodeURIComponent('%EC%EE%EB%EE%F2%EE%EA') ) [telepat]нужно поставить mbstring[/telepat] |
Глючит скрипт jquery.mobile.1.2.0.js
в строчке 3159: //if the url is in the stack, it's a forward or a back if ( decodeURIComponent( opts.currentUrl ) === decodeURIComponent( historyEntry.url ) ) { //define back and forward by whether url is older or newer than current page back = i < urlHistory.activeIndex; forward = !back; newActiveIndex = i; } |
это не скрипт глючит а ссылки у тебя кривые
|
Цитата:
Если в urlencode передаются русские фразы, то в такой вид они конвертятся, с %. Ты говоришь mbstring нужно ставить. А можно поподробнее пояснить что к чему? Вот какие настройки php сейчас у меня. ![]() |
чувствую надо включить mbstring.func_overload
или не хватает модификатора U в регулярках проблема в том, что у тебя строка разрезана по середине русского символа, который в utf-8 состоит из 2 байт. |
Цитата:
У меня сайт вообще в кодировке "windows-1251". Вобщем пока решил ситуацию таким способом. Отказался от обработки строки функцией urlencode. Вместо нее пробелы в строке заменяю плюсами и передаю такую строку в поиск. Так вроде пока работает. $q = preg_replace("/(\s+)/", "+", trim($q)); |
не важно в какой кодировке сайт. формы по дефолту посылают данные в utf-8
|
Цитата:
|
Часовой пояс GMT +3, время: 06:27. |