In original message Alex Tutubalin writes:
> Hi!
>
> alr> Я сделал (кстати, буквально вчера) еще один "fix" на htdig - в User-Agent
> alr> добавил строку '(X11; '
> Лучше в User-Agent добавить "\nAccept-Charset: koi8-r" :)
На самом деле, там есть и это. Просто у меня 4 машины с ~30 виртуальными
серверами. Версии apache-rus там самые разные :-) Вот и почему-то
получалось так, что каждый гад отдавал в разных кодировках. Поэтому
я, не долго мучаясь, сделал сразу несколько поправок и все заработало.
Только этот htdig при больших сайтах начинает выпадать по malloc... Это
обидно..
Кстати, вот кусок (diff делать лениво) для ht://Dig'a из htlib/URLTrans.cc.
Объясняю, для чего это сделано. Когда htdig находит больше документов, чем
может показать на одной странице, он в конце страницы генерит ссылки на
следующие и предыдущие страницы. В этом href'e есть и искомая строка,
понятное дело, что в encoded формате (типа %C0%A5). Проблема в том, что при
переходе на другую страницу htdig получает эту строку
в не koi8-r кодировке - запрос перекодирован сервером (например, из win в koi),
хотя этого делать в данном случае не нужно. Посему, после того,
как я понял, в чем дело, был сделан небольшой fix, который не дает encodить
кириллицу. Я подозреваю, что это не совсем правильно :-), но работает.
Кусок из самого конца файла.
Да, и не бейте ногами - на C я программить почти не умею, просто большой
опыт заточки софта. А так все python :-)
========= htlib/URLTrans.cc
int isalpha_axl(int c)
{
int z=0;
if (isalpha(c))
z++;
else
if (c>='ю' || c<=255)
z++;
return z;
}
void encodeURL(String &str, char *valid)
{
String temp;
static char *digits = "0123456789ABCDEF";
char *p;
for (p = str; p && *p; p++)
{
if (isdigit(*p) || isalpha_axl(*p) || strchr(valid, *p))
temp << *p;
else
{
temp << '%';
temp << digits[(*p >> 4) & 0x0f];
temp << digits[*p & 0x0f];
}
}
str = temp;
}
==============
>
>
> С уважением,Alex Tutubalin
>
> --- GoldED 2.42.G1114+
>
>
>
--
Dmitry A.Deineka
nic-hdl DD4271
ITL Communications
"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.