In <Pine.SOL2.3.96.SK.981021200918.1317A-100000@sun.med.ru> Oleg Broytmann (phd@sun.med.ru) wrote:
OB> Hello!
OB> У меня проблема с перекодированием %-символов (или я чего-то не понимаю).
Неужели этого нет в FAQ ???
OB> Есть CGI, которому на вход дается список, ну скажем, городов:
OB> /cgi-bin/today?city=%CD%EF%F1&city=%F6%4E&city=%E1%FF... и так далее.
OB> В некоторый момент этот CGI должен сгенерить ссылку, в которой есть тот
OB> же список городов:
OB> <A HREF="/cgi-bin/detail?city=%CD%EF%F1&city=%F6%4E&city=%E1%FF&position=Ax">ссылка</A>
OB> Все хорошо, если я хожу с юникса на юникс - все прекрасно работает. Но
OB> тут вдруг я посмотрел, как это выглядит из виндоуса. И вышла бяка.
OB> CGI today выполнился (он получает свои параметры из формы, и эти
OB> парметры apache-rus перекодирует правильно), сгенерил HTML с этой самой
OB> ссылкой, и текст в ссылке (вот эти мамые %CD%EF) не перекодировался. Затем
OB> я в виндоусе нажал на ссылку, apache-rus опять перекодировал параметры -
OB> бац, я получил дважды перекодированную информацию.
OB> Я что-то делаю не так? Я думал, apache-rus перекодирует эти процентики.
Нет. Искуственным интеллектом он не наделен. HTML он не парсил, не парсит и не
будет парсить. Нужно вставлять в HREF все эти буковки не в виде %CD, а виде
русских букв -- тогда все будет Ok. Конечно это не соответствует RFC2068 AFAIK,
но как всегда: "вам шашечки или ехать?". Или можно узнать кодировку клиента и
встроить перекодирование в процедуру генерации HREF'а... Тогда все будет уже
совсем "честно"...
OB> Сейчас, временно, я победил это так. Вместо ссылки я генерю форму:
OB> <INPUT NAME="city" VALUE="Москва" TYPE="hidden">
OB> <INPUT NAME="city" VALUE="Питер" TYPE="hidden">
OB> <INPUT NAME="position" VALUE="Ax" TYPE="hidden">
OB> И когда я нажимаю кнопочку, форма уходит в detail в правильном виде и
OB> правильно перекодируется.
OB> Как бы мне обойтись без формы с кнопочкой?
OB> Oleg.
OB> ----
OB> Oleg Broytmann National Research Surgery Centre http://sun.med.ru/~phd/
OB> Programmers don't die, they just GOSUB without RETURN.
"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.