+ + +
С нами с 22.08.05
Сообщения: 52
Рейтинг: 1
|
Добавлено: 31/08/05 в 12:37 |
Проблема такая:
В лог-файле фиксирую строку HTTP_REFERER юзера, пришедшего из поисковика. В строке присутствует и сам запрос, но он в шестнадцатиричной форме типа - %d0%90... Мне надо перекодировать строку, чтобы можно было прочитать.
Пробовал так:
$str=uri_unescape($str);
или так
$str=~s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge;
Оба варианта перекодируют, но в какую то непонятную кодировку, не в windows-1251.
|
|
|
|
full-plastic programmist
С нами с 05.09.03
Сообщения: 8361
Рейтинг: 4779
|
Добавлено: 31/08/05 в 12:42 |
наверное это КОИ-8...
|
|
вот соскучился по мастеру...
|
0
|
|
|
+ + +
С нами с 22.08.05
Сообщения: 52
Рейтинг: 1
|
Добавлено: 31/08/05 в 14:39 |
Немножко разобрался, но проблема остается.
Запросы с Яндекса расшифровываются нормально, а вот запросы с MNS нет. Дело в том, что на http://search.msn.com/ стоит кодировка utf-8. То есть сам текст в этой кодировке. А у меня на сайте естественно windows-1251.
Тогда уточняю проблему.
Есть текст в кодировке utf-8 (или в другой), как его перекодировать средствами Perl в нужную кодировку?
p.s. С Яндекса тоже не все запросы расшифровываются
|
|
|
|
С нами с 03.08.04
Сообщения: 129
Рейтинг: 263
|
Добавлено: 31/08/05 в 16:07 |
|
|
|
|
+ + +
С нами с 22.08.05
Сообщения: 52
Рейтинг: 1
|
Добавлено: 31/08/05 в 17:22 |
Все получилось!!! Благодарю.
Вот какой ответ:
use Text::Iconv;
my $converter = Text::Iconv->new("UTF-8", "windows-1251"); # Перкодируем из UTF-8 в win12551
while(<FILE>){
$str=$_;
$str=~s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge; #Переводим шестнадц. код в ASCI коды
$str = $converter->convert($str); # Конвертируем один код в другой
print $str
}
Правда, не знаю, как работать с несколькими кодировками. Но это уже детали. Разберемси )
|
|
|
|
С нами с 19.09.07
Сообщения: 1
|
Добавлено: 19/09/07 в 01:09 |
Ключевые слова из HTTP_REFERER фиксируй через Referer, который автоматически декодирует их.
|
|
|
|
full-plastic programmist
С нами с 05.09.03
Сообщения: 8361
Рейтинг: 4779
|
Добавлено: 19/09/07 в 09:59 |
Andrew z: спецом зарегался чтобы топик двухлетней давности поднять?
|
|
вот соскучился по мастеру...
|
0
|
|
|
С нами с 08.03.05
Сообщения: 114
Рейтинг: 118
|
Добавлено: 19/09/07 в 10:50 |
все гениальное просто =)
use URI::Escape;
use Encode;
while (<>) {
$k=uri_unescape $_ ;
$k=decode('utf8',$k);
$k=encode('cp1251',$k);
print $k;
}
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |