Эта тема на forum.dklab.ru


Nauly: Кириллица в урл-кодировке
Здравствуйте!

Скажите, пожалуйста, где у меня тут ошибка.. :) смешно конечно... но все же - почему сниффером вылавливается именно это (при отправке сообщения из формы), а если я тоже самое пытаюсь записать вручную в адресную строку - ошибка.

recipients=Werenion&title=%C7%E4%F0%E0%E2%F1%F2%E2%F3%E9%F2%E5%21&mode=1&message=%C7%E4%F0%E0%E2%F1%F2%E2%F3%E9%F2%E5%21%0D%0A%C1%F3%E4%E5%EC+%EE%F7%E5%ED%FC+%F0%E0%E4%FB+%E2%E8%E4%E5%F2%FC+%C2%E0%F1+%ED%E0+%ED%EE%E2%EE%EC+%E3%EE%F2%E8%F7%E5%F1%EA%EE%EC+%F4%EE%F0%F3%EC%E5+DarkMind.ru%21%0D%0A%CD%E0%F8+%F4%EE%F0%F3%EC+%ED%E0%EC%ED%EE%E3%EE+%EE%F2%EB%E8%F7%E0%E5%F2%F1%FF+%EE%F2+%FD%F2%EE%E3%EE+-+%EA%E0%EA+%EF%EE+%F4%EE%F0%EC%E5%2C+%F2%E0%EA+%E8+%EF%EE+%F1%EE%E4%E5%F0%E6%E0%ED%E8%FE+-+%F3%E2%E5%F0%E5%ED%2C+%ED%E0%EC+%EF%EE%ED%F0%E0%E2%E8%F6%E0+%EE%E1%F9%E0%F2%FC%F1%FF+%3B%29%0D%0A%0D%0A%CF.%D1....+%F1%EE%F0%F0%E8+%E7%E0+%F1%EF%E0%EC+%3A%28%0D%0A%0D%0A--%0D%0A%D1+%F3%E2%E0%E6%E5%ED%E8%E5%EC%2C%0D%0AErenion%2C+%E0%E4%EC%E8%ED%E8%F1%F2%F0%E0%F2%EE%F0+%F4%EE%F0%F3%EC%E0&iconid=0&s=&do=insertpm&pmid=&forward=&receipt=0&sbutton=Submit+Message&savecopy=1&signature=1&parseurl=1

Огромное спасибо заранее!
Duchal Alexander:
Nauly:
Объясните пожалуйста поподробнее. Ничего не понятно.
Nauly:
Мдя :) видимо, действительно сумбурно. Просто спешу.

есть скрипт - www.xxxx.ru/private.php
Через форму посылаются некоторые параметры, среди них такие, значениями которых является русский текст. Мне нужно, не заполняя форму просто через адресную строку (т.е. www.xxx.ru/private.php?a=мама&b=папа), отправить данному скрипту эти параметры. Но если делать так как я написал щас - по русски, не выходит, как вы знаете... т.е. надо перекодировать русские символы.
Я подсмотрел HTTPLook'ом, какая строка передается при отправке сообщения из формы - получилось то, что вы видете в вверху. Соотвественно, я честно скопировал в адресную строку эту фигню и . . все! не работает! :( почему - мне неизвестно, собственно, поэтому я тут
Duchal Alexander:
В php есть функция преобразования текста в url вид - urlencode (),

Возвращает строку, в которой все не алфавитно-числовые символы (кроме -_.) заменены на знак процентов (%) с последующими двумя 16-ричными цифрами и пробелами, кодированными как знаки плюс (+). Она кодируется тем же способом, что и post данные WWW-формы, то есть как в типе носителя application/x-www-form-urlencoded. Это отличается от RFC1738-кодирования (см. rawurlencode()) тем, что, по историческим соображениям, пробелы кодируются как плюсы (+). Эта функция удобна при кодировании строки для использования в части запроса URL для передачи переменных на следующую страницу:

а также обратная функция - urldecode(), они работает только для кодировки windows-1251.
Функции rawurldecode(), rawurlencode() - они работают также, но пробел не меняют на +.
Nauly:
Спасибо большое!! Очень благодарен.
Nauly:
Позвольте Вас еще побеспокоить :(
Оказывается, проблема в пробелах! Т.е. ни одна из этих функций не помогает, если в тексте есть пробелы, знаки подчеркивания, квадратные скобки и т.д. А сплошной текст замечательно отправляется в скрипт :)

Как решить эту проблему? В принципе, если придумать, чем заменить пробелы - чтобы визуально текст смотрелся нормально - тоже решение. А вообще, интересно все-же.... неужели нерешаем вопрос о пробелах? :(
Duchal Alexander:
У меня была другая проблема, но тоже с этими проклятыми пробелами. После обработки сроки urlencode, я еще обрабатывал эту строку с помощью str_replace, заменял "+" на "%20". Попробуйте, может и Вам этот вариант подойдет.
Nauly:
Нет, однохренственно :((((
Duchal Alexander:
Nauly:
Было бы намного легче, иметь кокретное представленее о скрипте и о форме. если не трудно прикрепите их.

Эта тема на forum.dklab.ru