Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: читаю RSS - проблемы с кодировкой
 
 автор: alba   (26.09.2006 в 13:25)   письмо автору
 
 

Всем привет!

Делаю блок гороскопа на сайт. В качестве источника взял http://www.hyrax.ru/cgi-bin/bn_xml.cgi.

Считываю и вывожу весь гороскоп при помощи следуюющего скрипта:


<?php
class Goroskop {
    var 
$title;   
    var 
$link// ссылка
    
var $description;  // гороскоп
    
function Goroskop ($aa) {
        foreach (
$aa as $k=>$v)
            
$this->$k $aa[$k];
    }
    function 
Out(){
        
$z=explode(" ",$this->title);
/*        $this->title=iconv("win1251","UTF-8",$this->title);
        $this->link=iconv("win1251","UTF-8",$this->link);
        $this->description=iconv("ISO-8859-1","UTF-8",$this->description);*/
        
switch($z[0]){
            case 
'ОВЕН':$img='picture <img src="images/oven.gif">';break;
            case 
'ТЕЛЕЦ':$img='picture <img src="images/telec.gif">';break;
            case 
'БЛИЗНЕЦЫ':$img='picture <img src="images/bliznec.gif">';break;
            default:
$img='';
        }
            echo 
"$img <a href=\"$this->link\">$this->title</a><br>$this->description<br>";
    }
}
function 
readDatabase($filename) {
    
// читать xml гороскоп
    
$data implode("",file($filename));
    
$parser xml_parser_create();
    
xml_parser_set_option($parser,XML_OPTION_CASE_FOLDING,0);
    
xml_parser_set_option($parser,XML_OPTION_SKIP_WHITE,1);
    
xml_parse_into_struct($parser,$data,$values,$tags);
    
xml_parser_free($parser);
    
// цикл по этим структурам
    
foreach ($tags as $key=>$val) {
        if (
$key == "item") {
            
$zodiak $val;
            for (
$i=0$i count($zodiak); $i+=2) {
                    
$offset $zodiak[$i] + 1;
                
$len $zodiak[$i 1] - $offset;
                
$tdb[] = parseGor(array_slice($values$offset$len));
            }
        } else {
            continue;
        }
    }
    return 
$tdb;
}

function 
parseGor($gvalues) {
    for (
$i=0$i count($gvalues); $i++)
        
$mol[$gvalues[$i]["tag"]] = $gvalues[$i]["value"];
    return new 
Goroskop($mol);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title>Untitled Document</title>
</head>
<body>
<?php
$db 
readDatabase("http://www.hyrax.ru/cgi-bin/bn_xml.cgi");
for(
$i=0;$i<count($db);$i++)
{
    
$db[$i]->Out();
}
?>
</body>
</html>




Проблема в том что выводится все в кодировке UTF-8!
Как конвертировать в windows-1251?

Сейчас у меня выводится такое вот безобразие:


Общая С…арактеристика РґРЅСЏ

   
 
 автор: Maksimus   (30.09.2006 в 23:26)   письмо автору
 
   для: alba   (26.09.2006 в 13:25)
 

В строках:

$this->title=iconv("win1251","UTF-8",$this->title);
$this->link=iconv("win1251","UTF-8",$this->link);
$this->description=iconv("ISO-8859-1","UTF-8",$this->description);

вместо win1251 пиши windows-1251 и поменяй местами win и utf всё должно работать.
Да, не забудь убрать комментарии и поменяй кодировку в самом браузере на Windows, если она у тебя не такая по дефолту.

А строка должна выглядеть так:
$this->title=iconv("UTF-8", "windows-1251",$this->title);
ну и все остальные естественно тоже.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования