Russian Apache Switch to English
Switch to Russian koi8-r
windows=1251
cp-866
iso8859-5
Russian Apache Как это работает Рекоммендации Где взять Как установить Как настроить Статус и поддержка
Краткий обзор FAQ Список рассылки Благодарности Поиск по серверу Powered by Russian Apache
Russian Apache mailing list archive (apache-rus@lists.lexa.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [apache-rus] mailing list troubles resolved



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 ] [ Как это работает ] [ Рекомендации ] [ Где взять ] [ Как установить ] [ Как настроить ] [ Статус и поддержка ] [ Краткий обзор ] [ FAQ ] [ Список рассылки ] [ Благодарности ] [ Поиск по серверу ] [ Powered by Russian Apache ] [ Apache-talk 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.