|
|
|
| Проблема такая. Пытаюсь использовать функцию decodeURI. В документации написано, что функция доступна с IE 5.5. У меня IE 6.0. Однако при выполнении следующего кода происходит ошибка.
s1 = decodeURI(s2);
, где s2-строка, закодированная php-функцией urlencode.
Кто-нибудь использовал эту функцию? Спасибо. | |
|
|
|
|
|
|
|
для: Organ
(29.06.2006 в 12:11)
| | если используете urlencode(), то для декодирования надо использовать urldecode().
по-моему так. могу ошибаться. | |
|
|
|
|
|
|
|
для: elenaki
(29.06.2006 в 12:29)
| | Дело в том, что кодирую php, а раскодирую javascript'ом (использую ajax, возникла проблема с подкачкой русских символов). А и та и другая функцию используют стандартный url-encoding. И она вообще не возвращает никакой результат.. | |
|
|
|
|
|
|
|
для: Organ
(29.06.2006 в 12:35)
| | не получится. у этих функций разные принципы кодирования. у меня была такая же проблема.
решилась отказом от передачи нелатинских символов в URL. использую XML. а для русского
на dklab эта проблема решена, кажется. | |
|
|
|
|
|
|
|
для: elenaki
(29.06.2006 в 12:38)
| | Ага, с помощью функций php iconv.. А мой php4 их не знает. Написано, правда что перевод кодировок встроен в библиотеку, но что-то не работает ). А хорошо у вас проблемы решаютя. Вот бы мне так. Не нравится-отказался )). | |
|
|
|
|
|
|
|
для: Organ
(29.06.2006 в 13:02)
| | мне надо было быстро. а когда думать некогда - трясти надо. не мытьем так катаньем, а
задача решена. есть время сидеть на форуме :) | |
|
|
|
|
|
|
|
для: elenaki
(29.06.2006 в 13:06)
| | А для чего вообще нужно кодировать УРЛ? | |
|
|
|
|
|
|
|
для: coloboc66
(29.06.2006 в 17:53)
| | не УРЛ, а данные.
в URL нельзя передавать кириллицу и другие национальные символы. поэтому их надо кодировать. | |
|
|
|
|
|
|
|
для: Organ
(29.06.2006 в 13:02)
| | Не нравится-отказался )).
не отказался, а решил другим способом. более доступным на тот момент. будет время - решу и с URL/ | |
|
|
|
|
|
|
|
для: elenaki
(29.06.2006 в 19:32)
| | Тут проблема, наверное, в том, что не поставлены кавычки вокруг константы s2. Т.е. надо
s1 = decodeURI("<?=$s2?>");
|
| |
|
|
|
|
|
|
|
для: 12345
(29.06.2006 в 19:47)
| | Да нет, s2 имеется ввиду переменная javascript, полученная запросом на php-сервер, где она была закодирована. | |
|
|
|
|
|
|
|
для: Organ
(29.06.2006 в 12:11)
| | Мм )) Что мешает прописать нормально кодировку ?
Попробуй ф-цию unescape ) | |
|
|
|
|
|
|
|
для: Бог Зайцев
(29.06.2006 в 19:48)
| | не помогает. пробовали... | |
|
|
|
|
|
|
|
для: elenaki
(29.06.2006 в 20:08)
| | Промазал ) | |
|
|
|
|
|
|
|
для: Бог Зайцев
(29.06.2006 в 19:48)
| | Пробовал unescape, не помогает. Вообще то в библиотеке Котерова предусмотрено правильное отображение win1251. Но для некоторых целей в настроках апача я убрал автокодировку и у меня передача русских данных совсем не работает. Поэтому я пытался закодировать на сервере php и раскодировать javascriptom. Однако функции, обратной urlencode я так и не нашел. | |
|
|
|
|
|
|
|
для: Organ
(29.06.2006 в 21:22)
| | А если кодировать на уровне клиентa ф-цией escape ?) | |
|
|
|
|
|
|
|
для: Бог Зайцев
(29.06.2006 в 21:26)
| | Как можно кодировать клиентом, если все переменные генерируются на сервере, после чего формируется жаваскрипт (функция, куда заложены передаваемые данные). Причем эти данные должны быть уже закодированы, иначе ajax их не подгружает. | |
|
|
|
|
|
|
|
для: Organ
(29.06.2006 в 21:29)
| | А что мешает расшифровывать в пхп ?)
Как вариант:
Возьми строчку, содержащую все возможные символы, в пхп откодируй urlenode'ом, потом разбей в массив (А) по одному символу на элемент, после чего создай массив B, каждый элемент которого соответствует раскодированному (urldecode)э лементу массива А, после чего эти два массива запиши в JS и сделай замену всех элементов массива А в нужной строке на соответствующие элементы массива Б )
Это не очень элегантно, но должно работать, если других вариантов нету %) | |
|
|
|
|
|
|
|
для: Бог Зайцев
(29.06.2006 в 22:01)
| | Так то конечно всегда можно сделать, спасибо за описание реализации этого ценного алгоритма )). Но это корявенько и криво. Буду искать выход. Как найду, напишу. Спасибо. | |
|
|
|
|
|
|
|
для: Organ
(29.06.2006 в 22:23)
| | Ну не так уж и коряво )) массивы надо генерировать 1 раз, в результате код на 3 строчки получится влючая объявление массивов )
А что с urldecode? ) | |
|
|
|
|
|
|
|
для: Бог Зайцев
(29.06.2006 в 22:42)
| | urldecode использовать не получится, т. к. подгрузка данных происходит БЕЗ перезагрузки страницы. А эти подгруженные данные показываются пользователю жаваскриптом. И естественно, если пользователь не бог зайцев, он не поймет "%20%AD%BF....". ) | |
|
|
|
|
|
|
|
для: Organ
(30.06.2006 в 08:10)
| | А причем тут перезагрузка страницы?)
Данные по ту сторону провода все равно достаются скриптом) Судя по тому, что в URL есть параметры, это скорее всего что-то серверное ) Там и надо копать ) | |
|
|
|
|
|
|
|
для: Бог Зайцев
(30.06.2006 в 09:47)
| | Эммс. Что-то не понял я ничего. Механизм работы следующий:
1. На клиенте javascript создает объект Subsys_JsHttpRequest_Js (что то вроде переписанного xmlHTTPRequest). Формирует запрос post или get, задается также адрес странички, на которую делается запрос (load.php).
2. На странице load.php получаем запрос, получаем информацию из базы, КОДИРУЕМ (в моем случае) urlencode, суем в некоторый массив $_RESULT.
3. При этом автоматически генерируется javascript-код, в виде вызова функции javascript Subsys_JsHttpRequest_Js.dataReady, параметрами которой передаются данные из массива $_RESULT, преобразованные из php-массива в javascript-массив. Этот код выводится в контент.
4. На клиенте получем ответ с сервера в переменную Subsys_JsHttpRequest_Js.responseJS. Имеем в переменной responseJS закодированные данные, которые сразу же показываем клиенту. Раскодировать имеем возможность ТОЛЬКО клиентом. Иначе на какой хрен вообще тут Ajax ). | |
|
|
|
|
|
|
|
для: Organ
(30.06.2006 в 09:58)
| | А что за специальные смиволы у тебя там ?)
Может есть смысл кодировать только их ?) | |
|
|
|
|
|
|
|
для: Бог Зайцев
(30.06.2006 в 14:14)
| | Включил автокодировку апача обратно (для тех файлов где нужно отключить настроил отдельный каталог). Теперь аякс правильно подгружает русские символы в кодировке win-1251. Теперь все работает. Хотя вопрос об обратной кодировке пхп жаваскриптом остается открытым, проблема решена. Всем спасибо. | |
|
|
|
|
|
|
|
для: Organ
(01.07.2006 в 15:32)
| | Кодировку просто надо было в load.php тоже прописывать ) | |
|
|
|
|
|
|
|
для: Бог Зайцев
(03.07.2006 в 01:33)
| |
$JsHttpRequest =& new Subsys_JsHttpRequest_Php("win-1251");
|
Эта строчка была всегда. С рождения мира. | |
|
|
|
|
|
|
|
для: Бог Зайцев
(30.06.2006 в 09:47)
| | в браузер выводить получается, выводит закодированную строку. если эту строку скопировать
и вставить в функцию декодирования - она нормально раскодируется. но скрипт не понимает.
подозреваю, что скрипт видит не то, что вижу я в браузере, а то, что в коде, т.е.
<script>document.write(urlencode('tralalalala'));</script>
не забывайте, что мы сейчас - в php-скрипте на сервере, а tralalalala - данные, полученные из базы
по запросу. как их закодировать java-script'ом, не используя тэги <script></script>? | |
|
|
|