Ответ
Misha v.3 16.05.2014 03:48
/ 16.05.2014 04:02
- есть много base64-реализаций и очевидно, что всем угодить невозможно:
http://en.wikipedia.org/wiki/Base64#URL_applications- декодирование символа '+' в пробел требует, например, CGI спецификация. т.е. это отключать это нельзя.
сейчас у вас возможны варианты:
- GET с escape '+'. правильный вариант, т.к. '+' -- спец символ, который должен быть закодирован в %2B при передаче его в URI. то, что в data у вас передаётся незаэнкоденный '+' -- это нарушение спецификации (имею в виду, что символ '+' не должен передаваться незакодированным, если хочется, чтобы он прочитался именно как '+').
- POST. там никаких преобразований не делается.
- replace. универсальный вариант, который позволит работать с любыми base64-реализациями.
в принципе можно подумать о том, чтобы в методы base64 кодирования/декодирования добавить опции и передавать алфавит (или хотя-бы два "необычных" символа и опцию по добавления pad-символа ('='). увы, не во всем места можно эти опции прозрачно передать (например есть неудобства с ^mail:send[], ^math:digest[], ^json:string[]).
P.S. про возможность добавить опцию с алфавитом я добавил в todo@. мы подумаем.