C0USIN Цитата: Пулучается, что и в CoolProxy алгоритм никуда не годится?
Нашел. Там использует фишка которую я в стандарте не видел. Браузер (firefox) при отправке урла почему-то заменяет символ '^' на '%5E', если он находится до символа '?' и не трогает, если после
Я предлагаю заменять первый '?' на '#/', остальные на '#^'
так будет проше делать преобразования туда и обратно
Пример сложного урла:
site.com/page.htm?/abc -> site.com\page.htm#\#%abc
Добавлено: mai62 Цитата: Спасибо за проделанный анализ. Хотелось бы видеть окончательный вариант.
Думаю скоро будет. Остались мелочи
Больше проблем возникнет с конвертором кеша...
Пока доработал "свой" вариант преобразония [more=URL->FileName]
Заменяются всегда:
* -> #x
: -> #!
\ -> #~
| -> #i
До первого '?' :
/ -> \
// -> \#n\
(если текущий символ '/' и предыдущий был такой же,
то / -> #n\ , иначе / -> \)
? -> #\
После первого '?'
(вариант, когда запросы (query) не делим на цепочку папок):
/ -> #%
// -> #%#%
? -> #^
Опционально (предложил
C0USIN):
%D0%xx -> символ с кодом xxh (только для кирилицы)
%20 -> пробел
Если имеем редирект, то FileName:=FileName+'#m'
Если последний символ '\', то FileName:=FileName+'#_'
Проблему когда имя файла совпадает с именем папки, я считаю можно решать в функциях чтения и записи.
Если подтвердиться то, что символ '^', находящийся до символа '?' браузеры всегда заменяют на '%5E', то вполне допустим следующий вариант
До первого '?' :
/ -> \
// -> \#\
? -> ^\
После первого '?':
/ -> #%
// -> #%#%
? -> #^
но тогда кроме # и / придется вылавливать еще и ^
Если вы видите потенциальную ошибку (кстати одну я знаю
) или еcть предложения, пишите.[/more]
Надо заранее определиться стоит сохранять все что после знака вопроса одним файлом или разбивать на папки.
Кстати кто-нибудь знает, какие ограничения есть на UNIX-овых файловых системах?