On Mon, 11 Oct 1999, Alexander I. Barkov wrote:
> > Решение тривиально, хотя и является нарушением буквы стандарта.
> > Писать в html url в незаэскейпленном виде.
> >
> > <A HREF="myscript?page=1&q=тест">
> >
> > тогда русский апач перекодирует это дело при отдаче, а браузер вернет
> > заэскейпленую URL, которая перекодируется обратно.
>
>
> Это понятно.
>
> Но в том-то и дело, что не хочется нарушать стандарт (надо было сразу
> написать),
> а поэтому как-то бы получить неперекодированный QUERY_STRING. Видимо,
> его
> необходимо затаскивать в какую-нить другую переменную окружения
> непосредственно
> во время перекодировки внутри апача. Иначе придется в самом скрипте
> вставлять
> перекодировку.
>
> Господа разработчики, а может можно сделать простой выход? Я думаю,
> я не первый и не последний, кто столкнулся с такой проблемой.
Тогда это не сюда, а в Apache-rus.
Корни проблемы следующие
1. Перекодировать QUERY_STRING надо, а то данные введенные пользователем
обработать не получится
2. Писать в url русские буквы не хочется, т.к. стандарт нарушает.
3. Заставить Алекса парсить HTML и перекодировать текст по одному
и url-ки по другому не получится. Он уже сколько раз это мнение
тут высказывал. Подумайте хотя бы о performance impact. Если уж
говорят, что на десятках запросов в секунду просто перекодировка
заметна.
Отсюда амораль- избегать русских букв в a href, плевать в кодированном
или некодированном виде.
Варианты борьбы
1.
<FORM><!-- action здесь вообще говоря не нужна-->н
<input type=hidden name="q" value="Тест">
<input type=hidden name="page" value=1>
<input type=submit name=next value="Следующая страница">
</FORM>
Да, длиннее чем href, зато стандарты соблюдены. И возможностей для
оформления, вообще говоря, больше.
2. Вместо q=тест передавать в следющую страницу какой-нибудь id.
--------------------------------------------------
Victor Wagner vitus@ice.ru
Programmer Office:7-(095)-203-51-19
Institute for Commerce Home: 7-(095)-135-46-61
Engineering http://www.ice.ru/~vitus
=============================================================================
= Apache-Rus@lists.lexa.ru mailing list =
Mail "unsubscribe apache-rus" to majordomo@lists.lexa.ru if you want to quit.
= Archive avaliable at http://www.lexa.ru/mail-archive =
"Russian Apache" includes software developed
by the Apache Group for use in the Apache HTTP server project
(http://www.apache.org/) See
Apache LICENSE.
Copyright (C) 1995-2001 The Apache Group. All rights reserved.
Copyright (C) 1996 Dm. Kryukov; Copyright (C)
1997-2009 Alex Tutubalin. Design (C) 1998 Max Smolev.