parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

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@. мы подумаем.