Alex Tutubalin wrote:
> Hi!
> ?? принимающий скрипт должен что-то ответить клиенту, то он этого не делает
> ?? сам (помним, перекодировки выключены!), а делает Redirect на скрипт/html,
> ?? расположеный в директории, для которой перекодировки не выключены.
>
> alr? В том единственном (пока) месте, где я использую File Upload, данный
> alr? метод неприменим. :(
> А почему ?
> alr? Более того, нельзя делать, чтобы не перекодировались
> alr? _все_ POST.
> Ну, это же можно и регулировать per-directory
>
У меня всего один скрипт, осуществляющий общение с клиентом.Все обращения имеют
вид user.cgi/something.html. Работа идет исключительно методом POST
(так как всегда передается login/password). Как бы ни один из предложенных пунктов
получается неприменим. :)
> ?? void set_charset(charset_table_t *charset, request_rec *r,
>
> alr? где-нибудь здесь вставить проверку, что в client_headers заголовок
> alr? Content-type имеет значениеmultipart/form data, и по этому торжественному
> alr? случаю сделать действие аналогичное нижеидущему?
>
> alr? if(!rtbl)
> alr? {
> alr? log_reason("Cannot find recode table",r-?uri,r);
> alr? return;
> alr? }
> Ну да. Если у запроса не проинициализирован r-?codep, то никакой перекодировки
> в дальнейшем не производится.
>
Правда правильней сделать так: r->codep=palloc(r->pool,sizeof(codepage_data_t));
r->codep->cp_otabl = rtbl->convtbl;
r->codep->cp_itabl = rtbl->revtbl;
r->codep->cp_name = charset->tablename;
r->codep->cp_lang = charset->lang;
r->codep->cp_flags = NEED_CHARSET;
Поставить проверку Content-type сюда, и в случае Multipart обнулить cp_itabl.
В таком случае данные от клиента перекодироваться не будут, а клиенту все дадут в
нужной кодировке.
Сделаешь? :)
> alr? Мне кажется, что можно перекодировать все элементы Mutlipart/form-data,
> alr? кроме тех, у которых есть filename. IMHO это вполне логично и единственно
> alr? верно.
> Насчет единственно верно - я не уверен. При upload text/html или text/plain
> приятно его перекодировать.
Текст, передаваемый клиентом, совершенно не обязательно имеет кодировку броузера
клиента.
И еще могу предложить аналогию с e-mail: ведь никто не перекодирует аттачи к
письмам.
WBR, MoKo
"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.