powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / URL, русские буквы и вопросительные знаки
13 сообщений из 13, страница 1 из 1
URL, русские буквы и вопросительные знаки
    #38680730
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В адресной строке набираю:
http://www.site.ru/script.php?param=???

Далее в скрипте script.php выполняю:
Код: php
1.
print_r($_REQUEST);



Получаю:
Код: html
1.
2.
3.
4.
5.
Array
(
    [param] => ���
    [PHPSESSID] => ...
)



Должно быть:
Код: html
1.
2.
3.
4.
5.
Array
(
    [param] => АБВ
    [PHPSESSID] => ...
)



Что за артефакт ? PHP значение параметра param декодирует. Но в процессе декодирования спотыкается...
mb_internal_encoding() даёт "ISO-8859-1"
...
Рейтинг: 0 / 0
URL, русские буквы и вопросительные знаки
    #38680734
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
urdencode
...
Рейтинг: 0 / 0
URL, русские буквы и вопросительные знаки
    #38680735
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В адресной строке набираю:
http://www. site.ru/script.php?param=%C0%C1%C2

Далее в скрипте script.php выполняю:
Код: php
1.
print_r($_REQUEST);



Получаю 3 вопросительных знака:
Код: html
1.
2.
3.
4.
5.
Array
(
    [param] => ���
    [PHPSESSID] => ...
)



Должно быть:
Код: html
1.
2.
3.
4.
5.
Array
(
    [param] => АБВ
    [PHPSESSID] => ...
)



Что за артефакт ? PHP значение параметра param декодирует. Но в процессе декодирования спотыкается...
...
Рейтинг: 0 / 0
URL, русские буквы и вопросительные знаки
    #38680736
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ScareCrowurdencode

urlencode
...
Рейтинг: 0 / 0
URL, русские буквы и вопросительные знаки
    #38680737
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С urdecode те же вопросы. Пробовал.
Да и вообще, php при генерации массива $_REQUEST декодирование уже выполняет самостоятельно.
...
Рейтинг: 0 / 0
URL, русские буквы и вопросительные знаки
    #38680739
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторurlencode
Зачем выполнять повторное кодирование уже закодированных данных ?
Вместо букв "АБВ" я передаю в строке запроса:
%C0%C1%C2
...
Рейтинг: 0 / 0
URL, русские буквы и вопросительные знаки
    #38681923
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не уж-то никто не знает, что URL-кодирование выполняется строго в UTF-8 ?
В частности, кириллические символы кодируются двумя байтами, все запрещённые символы из 1-й части ASCI-таблицы - 1 байтом, все прочие НЕлатинские и НЕцифровые символы - 3 байтами и более.

Строка "АБВ" в закодированном виде имеет вид:
%D0%90%D0%91%D0%92
а не
%C0%C1%C2
...
Рейтинг: 0 / 0
URL, русские буквы и вопросительные знаки
    #38682009
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
Cyrax_02Не уж-то никто не знает, что URL-кодирование выполняется строго в UTF-8 ?
В частности, кириллические символы кодируются двумя байтами, все запрещённые символы из 1-й части ASCI-таблицы - 1 байтом, все прочие НЕлатинские и НЕцифровые символы - 3 байтами и более.

Строка "АБВ" в закодированном виде имеет вид:
%D0%90%D0%91%D0%92
а не
%C0%C1%C2Да ну, с чего это. Что прислали, то и должны в скрипте получить. Разве что у вас где-то включена автоматическая перекодировка.
...
Рейтинг: 0 / 0
URL, русские буквы и вопросительные знаки
    #38682051
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторРазве что у вас где-то включена автоматическая перекодировка.
http://www.php.net/manual/en/function.urldecode.php

The superglobals $_GET and $_REQUEST are already decoded. Using urldecode() on an element in $_GET or $_REQUEST could have unexpected and dangerous results.
...
Рейтинг: 0 / 0
URL, русские буквы и вопросительные знаки
    #38682080
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
Cyrax_02, про urldecode это понятно. Но она декодирует байты, не символы. Абсолютно все равно, что там за кодировка, utf8, koi8 или какая-нибудь Shift_JIS. А циферки � - это не результат автоматического urldecode, это неудачная попытка перекодировки из одного чарсета в другой.
...
Рейтинг: 0 / 0
URL, русские буквы и вопросительные знаки
    #38682325
Cyrax_02
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
?Cyrax_02, про urldecode это понятно. Но она декодирует байты, не символы. Абсолютно все равно, что там за кодировка, utf8, koi8 или какая-нибудь Shift_JIS.В справке написано:
Decodes any %## encoding in the given string. Plus symbols ('+') are decoded to a space character.

Т.е. декодирует функция, действительно, отдельные байты, представленные в виде %##.
Учитывая, что у меня кодировка на стороне сервера установлена в UTF-8, то при передаче в запросе UTF-8-закодированных данных (%D0%90%D0%91%D0%92 в качестве "АБВ") в массиве $_REQUEST получаем нормальные читабельные строки.

?А циферки � - это не результат автоматического urldecode, это неудачная попытка перекодировки из одного чарсета в другой.Если же в качестве "АБВ" передавать %C0%C1%C2 (ASCII-закодированную строку), то, очевидно, на стороне сервера при попытке прочитать эти 3 байта как UTF-8-строку получаем крокозяблики (3 вопросительных знака).

P.S. Только вот непонятно, почему функция mb_internal_encoding() у меня возвращает "ISO-8859-1", а не "UTF-8" ?
Если в запросе указать UTF-8-закодированную строку (%D0%90%D0%91%D0%92 в качестве "АБВ"), то в массиве $_REQUEST я получаю нормальную читабельную строку "АБВ". Т.е. внутренняя кодировка на сервере у меня UTF-8 (это точно известно).
...
Рейтинг: 0 / 0
URL, русские буквы и вопросительные знаки
    #38682449
Фотография ScareCrow
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторmb_internal_encoding

потому что бойфн и кто то не читает доки
...
Рейтинг: 0 / 0
URL, русские буквы и вопросительные знаки
    #38682920
?
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
?
Гость
Cyrax_02Учитывая, что у меня кодировка на стороне сервера установлена в UTF-8,А чего такое "кодировка на стороне сервера" ?
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / URL, русские буквы и вопросительные знаки
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]