Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Общие вопросы о Flash (не затрагивающие ActionScript) (http://www.flasher.ru/forum/forumdisplay.php?f=60)
-   -   Кодирование URL параметров, как правильно интерпретировать плюс? (http://www.flasher.ru/forum/showthread.php?t=149138)

wvxvw 19.01.2011 21:34

Кодирование URL параметров, как правильно интерпретировать плюс?
 
Я тут с пеной у рта распинаюсь доказывая, что + - валидный символ в параметрах (том, что следует за "?" в URL), а мне люди пишущие на Питоне так же с пеной у рта доказывают, что "+" в параметрах нужно интерпретировать как пробел.
Я перечитал все RFC которые смог найти, доступную документацию и... не могу прийти к однозначному мнению...
Если окажется, что я не прав, то это баг URLVariables, если я прав, то это значит писать очердной костыль...

rainbowrussia 19.01.2011 22:04

Исторически сложилось, что плюс в URL заменяет пробел.
То есть script.pl?var=1+2 означает передачу параметра var со значением "1 2".
Вроде так. А чтобы передать "1+2" нужно написать script.pl?var=1%2B2

ps_spectre 19.01.2011 22:06

ага, и википедия об этом говорит
Query_string
Цитата:

* Letters (A-Z and a-z), numbers (0-9) and the characters '.','-','~' and '_' are left as-is
* SPACE is encoded as '+'
* All other characters are encoded as %FF hex representation with any non-ASCII characters first encoded as UTF-8 (or other specified encoding)
вот тут написано rfc3986#page-12

Цитата:

reserved = gen-delims / sub-delims

gen-delims = ":" / "/" / "?" / "#" / "[" / "]" / "@"

sub-delims = "!" / "$" / "&" / "'" / "(" / ")"
/ "*" / "+" / "," / ";" / "="
Цитата:

unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~"

wvxvw 19.01.2011 22:29

Все не так просто: http://bytes.com/topic/php/answers/5...s-rawurlencode
вот тут есть дискуссия еще по этому поводу. А дальше еще и вот это: http://lists.w3.org/Archives/Public/...2May/0032.html
И как бы я не могу найти, какое было постановление в итоге :)
Да и URLVariables согласен принимать плюсы в качестве пробелов, но никогда так не выводит параметры.

Да, еще такой непрозрачный момент:
Код AS3:

var variables:URLVariables = new URLVariables("a=1+2");
variables.b = "1+2";

дадут в итоге разный результат. Было немного непредсказуемо для меня...

rainbowrussia 19.01.2011 22:39

На сколько я понял, использование плюса для обозначения пробелам это дань истории, и не входит в официальную спецификацию. По-этому "+" и "%20" преобразуются в пробел, а обратное преобразование - в меру желания следовать rfc.


Часовой пояс GMT +4, время: 11:34.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.