кодировки при разборе XML

sergey_
На сайте с 09.01.2007
Offline
55
753

Разбираю XML парсером perl XML::RSS::Parser

xml получаю в кодировке windows-1251

после парсинга кодировка становиться utf8

кто сталкивался ? это лечиться? или посоветуйте перекодировку uft8-win

Черный список покупателей http://blclient.ru (http://blclient.ru) Апи для интернет магазинов http://blclient.ru/API/ (http://blclient.ru/API/) Отслеживание посылок Почты России с СМС уведомлениями (http://blclient.ru/).
Bor-ka
На сайте с 16.11.2004
Offline
256
#1

php.net/iconv

progress
На сайте с 11.07.2006
Offline
125
#2

###########################

#

# Перекодировка из UTF-8 в CP1251

#

###########################

sub utf8_to_cp1251 {

my @str;

require "Encode.pm";

foreach my $str (@_) {

&Encode::_utf8_on($str) unless &Encode::is_utf8($str);

push(@str, &Encode::encode('cp1251', $str));

}

return wantarray ? @str : $str[0];

}

Хелпзонович
На сайте с 15.06.2005
Offline
133
#3

Без Encode.pm

sub utf2win{
my($s)=@_;
return''if(!defined$s)||''eq$s;
my($r,$l)=('',length$s);
my@uM=(0x80,0xE0,0xF0,0xF8,0xFC,0xFE);
my@us=(0x00,0xC0,0xE0,0xF0,0xF8,0xFC);
my@um=(0x7F,0x1F,0x0F,0x07,0x03,0x01);
doo: for(my$i=0;$i<$l;){
my($c,$n,$d)=(ord(substr($s,$i++,1)),-1);
for(my$j=0;$j<6;$j++){
$n=$j,$c&=$um[$j],last if($c&$uM[$j])==$us[$j]}
$r.='?',next if$n<0;
for(my$j=0;$j<$n;$j++){
$r.='?',next doo if$i>=$l||((($d=ord(substr($s,$i,1)))&0xC0)!=0x80);
$i++;$c<<=6;$c|=($d&0x3F)}
$r.='?',next if$c>0xFFFD||($c>=0xD800&&$c<=0xDFFF);
if($c>1039&&$c<1104){$c=chr($c-1040+192)
}elsif($c==1025){$c=chr(168)
}elsif($c==1105){$c=chr(184)
}elsif($c==13||$c==10||($c>31&&$c<256)){$c=chr($c);
}else{$c='?'}
$r.=$c}
$r}
Вы там держитесь! Хорошего вам настроения. Здоровья.
progress
На сайте с 11.07.2006
Offline
125
#4
Хелпзонович:
Без Encode.pm

Обфускатором по коду чтоли прошлись перед тем как выложить?

GR
На сайте с 04.06.2007
Offline
88
#5

Последние версии PHP плохо работают с XML с кодировкой отличной от UTF-8

Партнерка Гудбоди не здохла. :))

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий