Проблема с кодировкой получаемой от ShoutCast

Phantomas

Новичок
Проблема с кодировкой получаемой от ShoutCast

Вообщем есть стандартный код для получения информации с ShoutCast сервера:
PHP:
$scfp = fsockopen("localhost", 8000, &$errno, &$errstr, 30);
if(!$scfp) {
  $scsuccs=1;
  echo'ShoutCast radio is Offline';
}
if($scsuccs!=1){
fputs ($scfp, "GET /admin.cgi?mode=viewxml HTTP/1.1\r\nHost: localhost:8000\r\n .
User-Agent: Listen To Braingell Radio (Mozilla Compatible)\r\n .
Authorization: Basic ".base64_encode ("admin:password")."\r\n\r\n");
while(!feof($scfp)) {
  $page .= fgets($scfp, 1000);
}
далее идет парсер для xml файлов.

Ну, вот, при получении информации и вывода её на страницу, мы видим нормально отображающуюся информацию на английском языке, но с русским возникает проблема, причем если заходить через браузер по адресу: http://limy.ru:8000/, то там информация на русском отображается нормально.

Пробовал делать перекодировку из utf8 в win1251, но ничего не получается, русский текст как отображался коряво, так и отображается. В чем проблема и как её решить я так и не понимаю.

-~{}~ 13.10.06 00:13:

Народ? Чего никто не знает ответа?
 

Phantomas

Новичок
Ðàäèî "Ëàéì" - это Радио "Лайм"
Òðàõòåíáåðã - Ïðèêîëû - Трахтенберг - Приколы
 

Phantomas

Новичок
Это если смотреть в какой кодировке?
Т.е. в какой кодировке? Это вот так вот отображается на странице с кодировкой cp1251 или win1251, что без разницы... А как вот это преобразить в нормальный русский текст - я не понимаю...
 

hermit_refined

Отшельник
Ещё раз - в какой кодировке смотрите?
В cp1251 нет таких символов, что вы здесь написали.

P.S. Попробую погадать и предположу, что данные отдаются в entities, а ошибка в секретной части - "...далее идет парсер для xml файлов".
Первые две строки xml и "парсер" - в студию.
 
у тебя на странице http://limy.ru:8000/
зачем написано

<meta http-equiv="Content-Language" content="en-us">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">

??
 

Phantomas

Новичок
А чего делать? Как бороться с некрасивой кодировкой? Называть русские транслитом не охота...
 

hermit_refined

Отшельник
Phantomas
Дурдом. Из твоих пояснений непонятно ничего - ни что ты получаешь от сервера, ни как преобразуешь, ни чего получаешь в итоге, даже непонятно, действительно ли ты чего-то не то получаешь. А ведь спрашивали у тебя...
Народ? Чего никто не знает ответа?
Никто не знает вопроса.
 

Phantomas

Новичок
hermit_refined
Щаз отвечу по поводу твоего вопроса...
PHP:
//define xml elements
 $loop = array("AIM");
 $y=0;
 while($loop[$y]!=''){
  $pageed = ereg_replace(".*<$loop[$y]>", "", $page);
  $scphp = strtolower($loop[$y]);
  $$scphp = ereg_replace("</$loop[$y]>.*", "", $pageed);
  if($loop[$y]==AIM)
   $$scphp = urldecode($$scphp);

$dj = $$scphp;
  $y++;
 }

 $loop = array("ICQ");
 $y=0;
 while($loop[$y]!=''){
  $pageed = ereg_replace(".*<$loop[$y]>", "", $page);
  $scphp = strtolower($loop[$y]);
  $$scphp = ereg_replace("</$loop[$y]>.*", "", $pageed);
  if($loop[$y]==ICQ)
   $$scphp = urldecode($$scphp);

$djinfo = $$scphp;
  $y++;
 }

 $loop = array("IRC");
 $y=0;
 while($loop[$y]!=''){
  $pageed = ereg_replace(".*<$loop[$y]>", "", $page);
  $scphp = strtolower($loop[$y]);
  $$scphp = ereg_replace("</$loop[$y]>.*", "", $pageed);
  if($loop[$y]==IRC)
   $$scphp = urldecode($$scphp);

$djtime = $$scphp;
  $y++;
 }
 
//get song info and history
 $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]);

$r++;
 }
//end song info

fclose($scfp);
}
вот и все собственно... если например отображать текущую композицию проигрываемую сервером потокого вещания, то это будет
PHP:
echo $song[0];
. Вот и все.
 

hermit_refined

Отшельник
Замечательно. А начало xml-ника и кодировка, в которой - когда смотришь в браузере - появляются эти символы; и в чём они - в entities или нет? (судя по всему ты куда-то это выводишь, урл есть?)
 

Phantomas

Новичок
По поводу xml:
Код:
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE SHOUTCASTSERVER [
	<!ELEMENT SHOUTCASTSERVER (CURRENTLISTENERS,PEAKLISTENERS,MAXLISTENERS,REPORTEDLISTENERS,AVERAGETIME,SERVERGENRE,SERVERURL,SERVERTITLE,SONGTITLE,SONGURL,IRC,ICQ,AIM,WEBHITS,STREAMHITS,STREAMSTATUS,BITRATE,CONTENT,VERSION,WEBDATA,LISTENERS,SONGHISTORY)>
	<!ELEMENT CURRENTLISTENERS (#PCDATA)>
	<!ELEMENT PEAKLISTENERS (#PCDATA)>
	<!ELEMENT MAXLISTENERS (#PCDATA)>
	<!ELEMENT REPORTEDLISTENERS (#PCDATA)>
	<!ELEMENT AVERAGETIME (#PCDATA)>
	<!ELEMENT SERVERGENRE (#PCDATA)>
	<!ELEMENT SERVERURL (#PCDATA)>
	<!ELEMENT SERVERTITLE (#PCDATA)>
	<!ELEMENT SONGTITLE (#PCDATA)>
	<!ELEMENT SONGURL (#PCDATA)>
	<!ELEMENT IRC (#PCDATA)>
	<!ELEMENT ICQ (#PCDATA)>
	<!ELEMENT AIM (#PCDATA)>
	<!ELEMENT WEBHITS (#PCDATA)>
	<!ELEMENT STREAMHITS (#PCDATA)>
	<!ELEMENT STREAMSTATUS (#PCDATA)>
	<!ELEMENT BITRATE (#PCDATA)>
	<!ELEMENT CONTENT (#PCDATA)>
	<!ELEMENT VERSION (#PCDATA)>
	<!ELEMENT WEBDATA (INDEX,LISTEN,PALM7,LOGIN,LOGINFAIL,PLAYED,COOKIE,ADMIN,UPDINFO,KICKSRC,KICKDST,UNBANDST,BANDST,VIEWBAN,UNRIPDST,RIPDST,VIEWRIP,VIEWXML,VIEWLOG,INVALID)>
	<!ELEMENT INDEX (#PCDATA)>
	<!ELEMENT LISTEN (#PCDATA)>
	<!ELEMENT PALM7 (#PCDATA)>
	<!ELEMENT LOGIN (#PCDATA)>
	<!ELEMENT LOGINFAIL (#PCDATA)>
	<!ELEMENT PLAYED (#PCDATA)>
	<!ELEMENT COOKIE (#PCDATA)>
	<!ELEMENT ADMIN (#PCDATA)>
	<!ELEMENT UPDINFO (#PCDATA)>
	<!ELEMENT KICKSRC (#PCDATA)>
	<!ELEMENT KICKDST (#PCDATA)>
	<!ELEMENT UNBANDST (#PCDATA)>
	<!ELEMENT BANDST (#PCDATA)>
	<!ELEMENT VIEWBAN (#PCDATA)>
	<!ELEMENT UNRIPDST (#PCDATA)>
	<!ELEMENT RIPDST (#PCDATA)>
	<!ELEMENT VIEWRIP (#PCDATA)>
	<!ELEMENT VIEWXML (#PCDATA)>
	<!ELEMENT VIEWLOG (#PCDATA)>
	<!ELEMENT INVALID (#PCDATA)>
	<!ELEMENT LISTENERS (LISTENER*)>
	<!ELEMENT LISTENER (HOSTNAME,USERAGENT,UNDERRUNS,CONNECTTIME, POINTER, UID)>
	<!ELEMENT HOSTNAME (#PCDATA)>
	<!ELEMENT USERAGENT (#PCDATA)>
	<!ELEMENT UNDERRUNS (#PCDATA)>
	<!ELEMENT CONNECTTIME (#PCDATA)>
	<!ELEMENT POINTER (#PCDATA)>
	<!ELEMENT UID (#PCDATA)>
	<!ELEMENT SONGHISTORY (SONG*)>
	<!ELEMENT SONG (PLAYEDAT, TITLE)>
	<!ELEMENT PLAYEDAT (#PCDATA)>
<!ELEMENT TITLE (#PCDATA)>]>
<SHOUTCASTSERVER>
	<CURRENTLISTENERS>0</CURRENTLISTENERS>
	<PEAKLISTENERS>1</PEAKLISTENERS>
	<MAXLISTENERS>10</MAXLISTENERS>
	<REPORTEDLISTENERS>0</REPORTEDLISTENERS>
	<AVERAGETIME>98</AVERAGETIME>
	<SERVERGENRE>Club</SERVERGENRE>
	<SERVERURL>http://radio.limy.ru</SERVERURL>
	<SERVERTITLE>+Р+а+дя¬-+о "+Л+а+й+м"</SERVERTITLE>
	<SONGTITLE>SUPERCLUB presents LOUNGE 5 - Electracoustic-Pacific coast highway(Kerri Chandler drive kbvyjkjubz</SONGTITLE>
	<SONGURL/>
	<IRC>#shoutcast</IRC>
	<ICQ>300297446</ICQ>
	<AIM>arsenbespalov</AIM>
	<WEBHITS>788</WEBHITS>
	<STREAMHITS>5</STREAMHITS>
	<STREAMSTATUS>1</STREAMSTATUS>
	<BITRATE>128</BITRATE>
	<CONTENT>audio/mpeg</CONTENT>
	<VERSION>1.9.7</VERSION>
	<WEBDATA>
		<INDEX>12</INDEX>
		<LISTEN>2</LISTEN>
		<PALM7>0</PALM7>
		<LOGIN>0</LOGIN>
		<LOGINFAIL>9</LOGINFAIL>
		<PLAYED>2</PLAYED>
		<COOKIE>0</COOKIE>
		<ADMIN>1</ADMIN>
		<UPDINFO>349</UPDINFO>
		<KICKSRC>0</KICKSRC>
		<KICKDST>0</KICKDST>
		<UNBANDST>0</UNBANDST>
		<BANDST>0</BANDST>
		<VIEWBAN>0</VIEWBAN>
		<UNRIPDST>0</UNRIPDST>
		<RIPDST>0</RIPDST>
		<VIEWRIP>0</VIEWRIP>
		<VIEWXML>401</VIEWXML>
		<VIEWLOG>0</VIEWLOG>
		<INVALID>11</INVALID>
	</WEBDATA>
	<LISTENERS/>
	<SONGHISTORY>
		<SONG>
			<PLAYEDAT>1160755468</PLAYEDAT>
			<TITLE>SUPERCLUB presents LOUNGE 5 - Electracoustic-Pacific coast highway(Kerri Chandler drive kbvyjkjubz</TITLE>
		</SONG>
		<SONG>
			<PLAYEDAT>1160755283</PLAYEDAT>
			<TITLE>D.GUETTA feat. C.WILLIS AND MONE - MONEY</TITLE>
		</SONG>
		<SONG>
			<PLAYEDAT>1160755090</PLAYEDAT>
			<TITLE>Overseer - Doomsday</TITLE>
		</SONG>
		<SONG>
			<PLAYEDAT>1160754758</PLAYEDAT>
			<TITLE>Barcode Brothers - Track 16</TITLE>
		</SONG>
		<SONG>
			<PLAYEDAT>1160754398</PLAYEDAT>
			<TITLE>Electronica:Tribute to Serge Gainsburg - The ORB Requiem pour un c..</TITLE>
		</SONG>
		<SONG>
			<PLAYEDAT>1160754141</PLAYEDAT>
			<TITLE>HOOJ PRESENTS: - Black Strobe-Fitting Together</TITLE>
		</SONG>
		<SONG>
			<PLAYEDAT>1160753770</PLAYEDAT>
			<TITLE>Jori Hulkkonen - Let Me Luv U (demon's rmx)</TITLE>
		</SONG>
		<SONG>
			<PLAYEDAT>1160753547</PLAYEDAT>
			<TITLE>SUPERCLUB presents LOUNGE 5 - S.W.-Move it</TITLE>
		</SONG>
		<SONG>
			<PLAYEDAT>1160753364</PLAYEDAT>
			<TITLE>Crazy Dance - Take Me With U</TITLE>
		</SONG>
		<SONG>
			<PLAYEDAT>1160753097</PLAYEDAT>
			<TITLE>New Age Funkstars - I'm Kummin</TITLE>
		</SONG>
		<SONG>
			<PLAYEDAT>1160752753</PLAYEDAT>
			<TITLE>FC Kahuna - Glitterball</TITLE>
		</SONG>
		<SONG>
			<PLAYEDAT>1160752521</PLAYEDAT>
			<TITLE>HOOJ PRESENTS: - Danmass-Haze(Danmass remix)</TITLE>
		</SONG>
		<SONG>
			<PLAYEDAT>1160752138</PLAYEDAT>
			<TITLE>Mario Lopez - You play me like a jojo (Rio et Juliana remix)</TITLE>
		</SONG>
		<SONG>
			<PLAYEDAT>1160751705</PLAYEDAT>
			<TITLE>Angry Mexican DJs - I Like It Funky (derrick carter reprise)</TITLE>
		</SONG>
		<SONG>
			<PLAYEDAT>1160751482</PLAYEDAT>
			<TITLE>Avantgarge - Get Down (Again) (remix)</TITLE>
		</SONG>
		<SONG>
			<PLAYEDAT>1160751260</PLAYEDAT>
			<TITLE>ATB feat. York - The Fields Of Love</TITLE>
		</SONG>
		<SONG>
			<PLAYEDAT>1160751064</PLAYEDAT>
			<TITLE>Rob D - Clubbed To Death (TheMatrix sndtr)</TITLE>
		</SONG>
		<SONG>
			<PLAYEDAT>1160750872</PLAYEDAT>
			<TITLE>CJStone - Infinity</TITLE>
		</SONG>
		<SONG>
			<PLAYEDAT>1160750388</PLAYEDAT>
			<TITLE>FAITHLESS - Insomnia (remix)</TITLE>
		</SONG>
		<SONG>
			<PLAYEDAT>1160749963</PLAYEDAT>
			<TITLE>Negrocan - Aquela Esquina (grant nelson club)</TITLE>
		</SONG>
	</SONGHISTORY>
</SHOUTCASTSERVER>
а кодировка utf-8, а выводиться все по нескольким адреса, но стоит ли туда заглядывать, там все равно только текущая песня отображается... могу написать если надо:
http://radio.limy.ru/
http://www.limy.ru/
 

Viktor_Rez

Новичок
В плагине shoutcast-dsp-1-8-2b не поддерживается передача кириллических шрифтов в ID3 тегах.

Проблема в плагине shoutcast-dsp-1-8-2b-windows.exe, он использует встроенную функцию Windows wsprintf из библиотекм user.dll - которая
возврашаяет FF - код символа 'я' и поэтому все русские буквы заменяются на этот символ.

Чтобы исправить баг (винды), после установки файла shoutcast-dsp-1-8-2b-windows.exe, достаточно подменить dsp_sc.dll на
пропатченную версию.

Патчь
 

Phantomas

Новичок
Viktor_Rez
Это я уже сделал, проблем с кодировкой, когда подключаешься к серверу каким-нибудь медиа-проигрывателем нет, есть только проблема с кодировкой, когда отображаешь к примеру на какой-нибудь странице в Интернете.
 

SiMM

Новичок
Сервер надо патчить.
Берёшь файлик sc_serv.exe и меняешь в нём любым hex-редактором windows-1252 на Windows-1251

-~{}~ 15.10.06 11:16:

Если сервер не твой - просто подменяй кодировку перед обработкой парсером.
 
Сверху