MainRadiotalkCustom
Общие вопросы по интернет радио вещанию
6   •   Посмотреть все темы

CP1252 ? CP1251

 

11
vadims @vadims
Пользуюсь скриптом для вывода статистики из SHOUTcast
Но выдает в 1252.. куда я не вставлял только
$content = html_entity_decode($content, 0, "cp1251");
и
html_entity_decode($content, 0, "cp1251");
Хост платный..
В чем может быть проблема?

<?php
include('config_radio.php');

$scfp = fsockopen("$scip", $scport, &$errno, &$errstr, 30);
if(!$scfp) {
$scsuccs=1;
echo''.$scdef.' is Offline';
}
if($scsuccs!=1){
fputs($scfp,"GET /admin.cgi?pass=$scpass&mode=viewxml HTTP/1.0\r\nUser-Agent: SHOUTcast Song Status (Mozilla Compatible)\r\n\r\n");
while(!feof($scfp)) {
$page .= fgets($scfp, 1000);
}
$loop = array("STREAMSTATUS", "BITRATE", "SERVERTITLE", "CURRENTLISTENERS", "MAXLISTENERS", "BITRATE");
$y=0;
while($loop[$y]!=''){
$pageed = ereg_replace(".*<$loop[$y]>", "", $page);
$scphp = strtolower($loop[$y]);
$$scphp = ereg_replace("</$loop[$y]>.*", "", $pageed);
if($loop[$y]==SERVERGENRE || $loop[$y]==SERVERTITLE || $loop[$y]==SONGTITLE || $loop[$y]==SERVERTITLE)
$$scphp = urldecode($$scphp);
$y++;
}
$pageed = ereg_replace(".*<SONGHISTORY>", "", $page);
$pageed = ereg_replace("<SONGHISTORY>.*", "", $pageed);
$songatime = explode("<SONG>", $pageed);
$r=1;
while($songatime[$r]!=""){
$t=$r-1;
$playedat[$t] = ereg_replace(".*<PLAYEDAT>", "", $songatime[$r]);
$playedat[$t] = ereg_replace("</PLAYEDAT>.*", "", $playedat[$t]);
$song[$t] = ereg_replace(".*<TITLE>", "", $songatime[$r]);
$song[$t] = ereg_replace("</TITLE>.*", "", $song[$t]);
$song[$t] = urldecode($song[$t]);
$dj[$t] = ereg_replace(".*<SERVERTITLE>", "", $page);
$dj[$t] = ereg_replace("</SERVERTITLE>.*", "", $pageed);
$r++;
}
fclose($scfp);
}

if($streamstatus == "1"){
echo'
<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<link rel=stylesheet href="" type="text/css">
<title>'.$scdef.'</title>
</head>

<body text="" bgcolor="">


<p align="center"><center>
<img src="online.jpg"><br>
<b>Stream Title:</b> '.$servertitle.'<br>
<b>Listeners:</b> '.$currentlisteners.' / '.$maxlisteners.'<br>
<b>Bitrate:</b> '.$bitrate.'kbps<br>
<b>Current Song:</b> '.$song[0].'</p><b>
</p>
</body>

</html>';
}
if($streamstatus == "0")
{
echo'
<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<link rel=stylesheet href="" type="text/css">
<title>Radio Server Is Offline</title>
</head>

<body text="" bgcolor="">
<center>
<img src="offline.jpg">
</body>

</html>';
}
?>

6245
Тарас @tarasian666
html_entity_decode функция для преобразования html символов в текст а не для перекодирования.
если б внимательней читали форму то б нашли iconv('UTF-8','CP1251',$text);

11
vadims @vadims
Народ только умничать умеет а сам не чего не знает!
Так как по аси только все умничают!

Я день отмучался но проблему решил - покажите мне на форуме ГДЕ ЭТО ОБСУЖДАЛОСЬ? (так как именно так мне ответили)

iconv(‘windows-1252?,’utf-8//IGNORE’,'текст’); не помогло возвращало ??????? 11

даже так не хочет перкодировать -
$song[$t]= mb_convert_encoding($song[$t], mb_detect_encoding($song[$t], "CP1252"), "UTF8");
$song[$t]= mb_convert_encoding($song[$t], "UTF8", "CP1251");

Вот решение проблемы -

находим -
$song[$t] = urldecode($song[$t]);
меняем на
$song[$t] = html_entity_decode($song[$t]);
P.S. все гениальное - просто!

Отредактировано vadims - 17.01.2010
6245
Тарас @tarasian666
kavadims пишет:

ДЕ ЭТО ОБСУЖДАЛОСЬ? (так как именно так мне ответили)

а поиск зачем?
но видите сами справились, а подняли столько шума.
И не советую нагло стучать посторонним людям в асю за помощью "без пива",
И тверждать что разбираетесь в програмировании когда для изменения одной переменной просто вставляете в начале кода iconv('UTF-8','CP1251',$text); тем более что переменная $text не встречается в даном скрипте. то же самое про $content = html_entity_decode($content, 0, "cp1251");
kavadims пишет:

Народ только умничать умеет а сам не чего не знает!

не судите да несудимы будете

6
guestalex @guestalex
kavadims пишет:


Вот решение проблемы -

находим -
$song[$t] = urldecode($song[$t]);
меняем на
$song[$t] = html_entity_decode($song[$t]);
P.S. все гениальное - просто!


Чувак, ты МЕГА!!! Я вчера весь день на это убил, а ты дал 100% решение!!!! Аллилуйя!!! Путь Бог тебя благословит за это!!!!

Кстати, в названии радиостанции, если тоже кракозябры, меняем urldecode на html_entity_decode

Отредактировано guestalex - 09.09.2012