Тема: Проблемы с кодировкой.

Заранее прошу прощения, если подобный вопрос уже был на форуме. Я прочитал много гайдов по данной проблеме, но так ничего мне и не помогло. Проблема в отображение кодировки тегов на сайте. Вместо русских букв - абракадабра.
Софт который используется:
ОС - FreeBSD
Веб-сервер - nginx
Сервер радио - icecast
Клиент для вещания - SAM Broadcaster.
Скрипт для вывода статистики: -

<html><head><meta http-equiv="Content-Type" content="text/html;charset=utf-8" ></head><?php
$ip = "ktkp.mine.nu";
$port = "82";
$ice2_station = "Радио KTKP";

$fp = fsockopen("$ip", $port, &$errno, &$errstr, 30); //open connection
if(!$fp) {
        $success=2;  //set if no connection



//edit html to fit your stations site, this display is for offline status
echo'<table>
     <tr>
        <td width="100%" colspan="2">
        <img border="0" src="images/offline.gif" width="22" height="22">
        <b><font face="Georgia" size="5" color="#FF0000">'.$ice2_station.' сейчас не работает</font></b></td>
      </tr>
</table>';
}

if($success!=2){ //if connection
 fputs($fp,"GET /status2.xsl HTTP/1.0\r\nUser-Agent: Icecast2 XSL Parser (Mozilla Compatible)\r\n\r\n"); //get status2.xsl
 while(!feof($fp)) {
  $page .= fgets($fp, 1000);
 }
 fclose($fp); //close connection
 $page = ereg_replace(".*<pre>", "", $page); //extract data
 $page = ereg_replace("</pre>.*", ",", $page); //extract data



  $numbers = explode(",",$page); //bomb it and extract data
 $mount = $numbers[0];
 $connections = $numbers[1];
 $stream_n = $numbers[2];
 $listeners = $numbers[3];
 $desc = $numbers[4];
 $cur_song = $numbers[5];
 $str_url = $numbers[6];
 $client_info = $numbers[7];
 $test1 = $numbers[8];   //set vars that where empty and still dont know what
 $mount = $numbers[11];
 $connections = $numbers[12];
 $station =$numbers[13];
 $listeners = $numbers[14];
 $description = $numbers[15];
 $cur_song = $numbers[16];
 $www_url  = $numbers[17];
if (strlen($mount)<2) echo '<table width="100%" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
<tr>
 <td width="100%"><b><font face="Arial" size="2">
        <tr>
        <td width="100%"><b><font face="Georgia" color="green" size="5">
        <img border="0" src="images/ice2_status/tunes.gif" width="22" height="18">
        '.$ice2_station.' Не работает! </font></b></td>
      </tr>
      </tr>
         </table>';
    
//edit html to fit your stations site, this display is for online status
    else echo '<table width="100%" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
<tr><center>
 <td width="100%"><b><font face="Arial" size="2">
        <tr>
        <td width="100%"><b><font face="Georgia" color="green" size="2">
        '.$ice2_station.' <img border="0" src="online.jpg" width="110" height="20"> </font></b></td><center>
      </tr>
      <tr>
        <td width="100%"><b><font face="Georgia" color="red" size="2">
        <img border="0" src="user.jpg" width="40" height="40">
        Слушателей:'.$listeners.' </font></b></td>
      </tr>

            <tr>
        <td width="100%"><b><font face="Georgia" color="green" size="2">
        <img border="0" src="radio_play.png" width="40" height="40">
        Трек:'.$cur_song.' </font></b></td>
      </tr>
           
      </tr>
         </table>';
    }

?></html>

Итак вопросы:
1)Можно ли как-нибудь научить SAM отправлять теги в UTF-8?
2)Как сделать перекодировку текста в <windows-1251> не меняя настроек веб-сервера?
P.S. Вариант с изменением <charset>windows-1251</charset> в маунте айскаста и <meta http-equiv="Content-Type" content="text/html;charset=windows-1251" > не помогает.
Заранее спасибо за ответ.

2

Re: Проблемы с кодировкой.

ставь версию отсюда: http://www.icecast.pwp.blueyonder.co.uk/
Хотя бы KH1

3

Re: Проблемы с кодировкой.

Не особо понимаю её преимущества, касательно кодировки. Можно подробнее, чем она отличается от обычной 2.3.2?

4

Re: Проблемы с кодировкой.

1) <charset>cp1251</charset>
2) iconv('CP1251','UTF-8',$text); и iconv('UTF-8','CP1251',$text);

-------------------------------
R244390603111<- пиво лить сюда

5

Re: Проблемы с кодировкой.

2Klef, огромное спасибо, но мои знания PHP оставляют желать лучшего, подскажи пожалуйста куда именно вписать iconv в скрипте.

6

Re: Проблемы с кодировкой.

в любое место.
http://www.softtime.ru/dic/id_dic=286&id_group=11
первая строка от гугла

это функция перевода кодировки.
т.е. если у нас есть
echo $text;
и текст идет в кодировки UTF-8 а нам надо отображать в cp1251 то у нас получается
echo iconv('UTF-8','CP1251',$text);

-------------------------------
R244390603111<- пиво лить сюда

7

Re: Проблемы с кодировкой.

пишет Hamsterenok:

2Klef, огромное спасибо, но мои знания PHP оставляют желать лучшего, подскажи пожалуйста куда именно вписать iconv в скрипте.

Klef советует тебе использовать функцию iconv,которая принудительно сменит в любой из выбранных строк кодировку)

Отредактировано retro4u (03-12-2009 19:09:28)

8

Re: Проблемы с кодировкой.

Всё, разобрался. Ещё раз огромное спасибо!

Отредактировано Hamsterenok (04-12-2009 17:14:25)

9

Re: Проблемы с кодировкой.

пишет Hamsterenok:

Всё, разобрался. Ещё раз огромное спасибо!

молодец wink
всегда старайся сам модернизировать скрипт, это дает опыт и громадное удовлетворение.

-------------------------------
R244390603111<- пиво лить сюда

10

Re: Проблемы с кодировкой.

я б не рекомендовал использовать iconv (почему - гугл)
мой скрипт

if( mb_detect_encoding($string,"UTF-8, ISO-8859-1")!="UTF-8" ) {$string = utf8_encode($string);}

в основном все теги в кодировке ISO-8859-1, редко попадается другая (в принципе не должна т.к. кодировка id3v1 - ISO-8859-1 или utf-8, id3v2 utf-16)
потому можно аналогично добавить

if( mb_detect_encoding($string,"CP1251, ISO-8859-1")!="UTF-8" ) {$string = utf8_encode($string);}

и тд

11

Re: Проблемы с кодировкой.

Можно про недостатки iconv, беглый поиск ответа не дал

-------------------------------
R244390603111<- пиво лить сюда

12

Re: Проблемы с кодировкой.

мда... беглым поиском и я теперь не найду.. раз както наткнулся, iconv то ли ресурсов больше жрет, то ли не все символы распознает верно..
но не заставляю ее не использовать, на себе ее не испытывал..
И чисто моя субьективная мысль что iconv используєет "громоздкие" библиотеки, а utf8_encode предназначена чисто для перекодирования в utf-8

13

Re: Проблемы с кодировкой.

хм, громоздкость, за ней не заметил, хотя железо "нелеквид" и оценка ресурсоемкости производиться очень часто.
А вот насчет необработки некоторых символов, тоже инфу находил, но как бы задачи у меня перед ней, и не требует 100% точности wink

-------------------------------
R244390603111<- пиво лить сюда

14

Re: Проблемы с кодировкой.

ну впринципе да...
прсто у меня задача была где точность нужна

15

Re: Проблемы с кодировкой.

пробывал описанные тут оба варианта кодировка немного изменилась но не кирилица выводит так вот Òðåê: Ëèçà - ГЌГҐ Г‘ Òîáîé (Remix)
помогите плиз решить проблему

<html><head><meta http-equiv="Content-Type" content="text/html;></head>
<charset>cp1251</charset>
iconv('CP1251','UTF-8',$text); 
iconv('UTF-8','CP1251',$text);
<?php
$ip = "78.30.228.174";
$port = "8000";
$ice2_station = "HOT Radio";


$fp = fsockopen("$ip", $port, &$errno, &$errstr, 30); //open connection
if(!$fp) {
        $success=2;  //set if no connection



//edit html to fit your stations site, this display is for offline status
echo'<table>
     <tr>
        <td width="100%" colspan="2">
        <img border="0" src="images/offline.gif" width="22" height="22">
        <b><font face="Georgia" size="5" color="#FF0000">'.$ice2_station.' сейчас не работает</font></b></td>
      </tr>
</table>';
}

if($success!=2){ //if connection
 fputs($fp,"GET /status2.xsl HTTP/1.0\r\nUser-Agent: Icecast2 XSL Parser (Mozilla Compatible)\r\n\r\n"); //get status2.xsl
 while(!feof($fp)) {
  $page .= fgets($fp, 1000);
 }
 fclose($fp); //close connection
 $page = ereg_replace(".*<pre>", "", $page); //extract data
 $page = ereg_replace("</pre>.*", ",", $page); //extract data



  $numbers = explode(",",$page); //bomb it and extract data
 $mount = $numbers[0];
 $connections = $numbers[1];
 $stream_n = $numbers[2];
 $listeners = $numbers[3];
 $desc = $numbers[4];
 $cur_song = $numbers[5];
 $str_url = $numbers[6];
 $client_info = $numbers[7];
 $test1 = $numbers[8];   //set vars that where empty and still dont know what
 $mount = $numbers[11];
 $connections = $numbers[12];
 $station =$numbers[13];
 $listeners = $numbers[14];
 $description = $numbers[15];
 $cur_song = $numbers[16];
 $www_url  = $numbers[17];
if (strlen($mount)<2) echo '<table width="100%" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
<tr>
 <td width="100%"><b><font face="Arial" size="2">
        <tr>
        <td width="100%"><b><font face="Georgia" color="green" size="5">
        <img border="0" src="images/ice2_status/tunes.gif" width="22" height="18">
        '.$ice2_station.' Не работает! </font></b></td>
      </tr>
      </tr>
         </table>';
    
//edit html to fit your stations site, this display is for online status
    else echo '<table width="100%" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
<tr><center>
 <td width="100%"><b><font face="Arial" size="2">
        <tr>
        <td width="100%"><b><font face="Georgia" color="green" size="2">
        '.$ice2_station.' <img border="0" src="online.jpg" width="110" height="20"> </font></b></td><center>
      </tr>
      <tr>
        <td width="100%"><b><font face="Georgia" color="red" size="2">
        <img border="0" src="user.jpg" width="40" height="40">
        Слушателей:'.$listeners.' </font></b></td>
      </tr>

            <tr>
        <td width="100%"><b><font face="Georgia" color="green" size="2">
        <img border="0" src="radio_play.png" width="40" height="40">
        Трек:'.$cur_song.' </font></b></td>
      </tr>
           
      </tr>
         </table>';
    }

?></html>

Отредактировано swart (17-12-2009 19:12:28)

16

Re: Проблемы с кодировкой.

Зачем в этом коде "<charset>cp1251</charset>"?
к чему "iconv('CP1251','UTF-8',$text);  iconv('UTF-8','CP1251',$text);" в начале кода?
имеется представление о языках программирования?

-------------------------------
R244390603111<- пиво лить сюда

17

Re: Проблемы с кодировкой.

О БОГИ!!! но самое главное что iconv не всередине php

18

Re: Проблемы с кодировкой.

пишет Klef:

Зачем в этом коде "<charset>cp1251</charset>"?
к чему "iconv('CP1251','UTF-8',$text);  iconv('UTF-8','CP1251',$text);" в начале кода?
имеется представление о языках программирования?

представление на начальном уровне только начинаю вкуривать...
а charset для вывода в виндовой кодировке

19

Re: Проблемы с кодировкой.

charset
в конфиге айса
iconv функция внутри блока php, т.е. что то равно iconv чего то, или echo iconv
а так полностью согласен с tarasian666

-------------------------------
R244390603111<- пиво лить сюда

20

Re: Проблемы с кодировкой.

echo'
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body style="margin:0 0 0 0; background-color:#000; color:#fff">
<b><style="font-family:Arial; font-size:2;">В эфире:
       iconv('ISO-8859-1','UTF-8',$cur_song)</font></b>
</body>
</html>';

данный код почему-то ничего не отображает, есть подозрения на неправильную расстановку кавычек, но пробовал по-разному - не помогает - ничего не отображает, просто пустота (цвет фона тоже не меняет)
П.С.
и кстати icecast отдаёт в кодировке windows-1252 по данным декодера от студии всеми любимого Артемия Лебедева

как мало полезных вредных привычек
Рок, альтернатива, метал, ска, панк: Red-Radio [Station] www.red-radio.ru

21

Re: Проблемы с кодировкой.

$cur_song = iconv('ISO-8859-1','UTF-8',$cur_song);
echo'
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
</head>
<body style="margin:0 0 0 0; background-color:#000; color:#fff">
<b><style="font-family:Arial; font-size:2;">В эфире: $cur_song</font></b>
</body>
</html>';

Отредактировано tarasian666 (05-02-2010 01:04:48)

22

Re: Проблемы с кодировкой.

пишет lespaul43:

П.С.
и кстати icecast отдаёт в кодировке windows-1252 по данным декодера от студии всеми любимого Артемия Лебедева

он лжет
там получается cp1251 искаженная ISO-8859-1

Отредактировано tarasian666 (05-02-2010 01:18:24)

23

Re: Проблемы с кодировкой.

Тоже столкнулся с проблемой.
есть строка вида:
$mas[0] = iconv('CP-1252','UTF-8',$mas[0]);
echo mas[0];

Выводит пустую строку. в чем проблема?

http://radioheart.ru/banners/radioheart_400x40_banner.jpg
RadioHeart.ru: Функциональный радио хостинг с автодиджеем и нонстопом, а так же быстрый виртуальный хостинг. Возможность создать радио за 5 минут, подключить автодиджей и нонстоп.
Отзывы о хостинге

24

Re: Проблемы с кодировкой.

 
$mas[0] = iconv('Windows-1252','UTF-8',$mas[0]);
echo $mas[0];

а так?

ps http://www.php.net/manual/en/function.iconv.php не ленитесь, читайте мануал

Отредактировано tarasian666 (05-02-2010 02:23:31)

25

Re: Проблемы с кодировкой.

Строка появилась, но текст по прежнему в кракозябрах. Может я исходную не такую выбрал? Шауткост какую использует? Весь сайт в utf-8 и вот одна строчка с неправильной кодировкой вечно мозодит глаза)
Стата берется их XML
В 7.html русский текст отображается корректно

http://radioheart.ru/banners/radioheart_400x40_banner.jpg
RadioHeart.ru: Функциональный радио хостинг с автодиджеем и нонстопом, а так же быстрый виртуальный хостинг. Возможность создать радио за 5 минут, подключить автодиджей и нонстоп.
Отзывы о хостинге