На сайте информацию из mysql базы выводит вопросами (русский текст). Что-то с кодировной. В базе таблицы выставлены как utf8_general_ci и в них хранится данные с русскими буквами. Сами файлы под кодировкой UTF-8 без BOM. Вот исходный код с сайта | Код | <?xml version="1.0" encoding="UTF-8" ?> <rss version="2.0"> <channel> <language>ru</language> <title>Радио</title> <category>Чат</category> <link>http://podriv.ru</link> <copyright>© 2009</copyright> <description>Радио</description> <lastBuildDate>Tue, 17 Nov 2009 00:00:00 +0200</lastBuildDate> <pubDate>Tue, 17 Nov 2009 00:00:00 +0200</pubDate> <docs>http://blogs.law.harvard.edu/tech/rss</docs> <managingEditor>[email protected]</managingEditor> <webMaster>[email protected]</webMaster> <item> <title>???????? ??????</title> <link>http://podriv.ru/mchat</link> <description>??????? ???????? ?????? ?? ?????? ????????? ?? ????? ????? ??????? PODRiV.</description> <category>????????? ???????</category> <pubDate>Tue, 17 Nov 2009 00:00:00 +0200</pubDate> <guid>http://podriv.ru/mchat</guid> </item> </channel></rss>
|
вот сам index.php | Код | <?php header('Content-Type: text/html; charset=UTF-8'); header("Content-Type: application/xml; charset=UTF-8"); // начало программы include "rss.inc"; // это собственно класс include "conn.inc"; // переменные для открытия базы
$Rss= new CRss();
$Rss->Title="Радио"; $Rss->Link="http://podriv.ru"; $Rss->Copyright="© 2009"; $Rss->Description="Радио"; $Rss->Category="Чат"; $Rss->Language="ru";
$Rss->ManagingEditor="[email protected]"; $Rss->WebMaster="[email protected]"; $Rss->Query="SET NAMES utf8"; $Rss->Query="SELECT rss.title, rss.description, rss.link, rss.date, rss.category FROM rss ORDER by DATE desc Limit 0,20";
$Rss->Open($Server,$DataBase,$Login,$Password); $Rss->LastBuildDate=date("r"); // получаем последнюю дату публикации $query = "select rss.DATE FROM rss ORDER by rss.date desc Limit 0,1";
$result1 = mysql_query($query) or die("FROM rss failed");
$line = mysql_fetch_array($result1);
$Date =date("r",strtotime($line[0])); mysql_free_result($result1);
$Rss->LastBuildDate=$Date; $Rss->PubDate=$Rss->LastBuildDate;
$Rss->PrintHeader(); $Rss->Query();
while ($line = mysql_fetch_array($Rss->Result)) { // для каждой записи выведем $Title = $line[0]; $Description = $line[1]; $Link=$line[2]; $PubDate=date("r",strtotime($line[3])); $Category=$line[4]; $Rss->PrintBody($Title,$Link,$Description,$Category,$PubDate); } $Rss->PrintFooter(); $Rss->Close();
?>
|
вот rss.inc | Код | <?php class CRss { var $Title; // заголовок канала var $Link; // ссылка на главную страницу var $Copyright; // копирайт var $Description; // описание канала var $LastBuildDate; // дата последнего документа (по умолчанию текущая) var $Language; // язык var $PubDate; // дата публикации var $ManagingEditor; // E-mail редактора var $WebMaster; // E-mail webmaster var $Category; // категория
var $Query; // содержимое запроса var $Connect; // для соединения с базой данных var $Result; // для хранения результата
function Translate($text) // кодируем для вывода {
$trans = array("<" => "<", ">" => ">",'"' => ""","&" => "&"); $text=strtr($text,$trans); $array=explode("<br>",$text); $count=count($array); return $text;
}
function Query() { $this->Result = mysql_query($this->Query) or die("Query failed"); } function Open($Server,$DataBase,$Login,$Password) // открыть MySql { $this->Connect = mysql_connect($Server, $Login, $Password ) or die("Could not connect"); mysql_select_db($DataBase) or die("Could not select database");
} function Close() // закрыть MySql { mysql_free_result($this->Result); mysql_close($this->Connect); }
function PrintHeader() // печать заголовка { header("Content-Type: application/xml; charset=UTF-8"); // сразу говорим, что это формат XML header("Content-Type: text/html; charset=UTF-8"); $RN="\r\n"; $End="?"; $Date=date("r"); // дата в формате Mon, 25 Dec 2006 10:23:37 +0400 print "<$End"; print "xml version=\"1.0\" encoding=\"UTF-8\" $End> $RN"; print "<rss version=\"2.0\">$RN"; print " <channel>$RN"; print " <language>$this->Language</language>$RN"; print " <title>$this->Title</title>$RN"; print " <category>$this->Category</category>$RN"; print " <link>$this->Link</link>$RN"; print " <copyright>$this->Copyright</copyright>$RN"; print " <description>$this->Description</description>$RN"; print " <lastBuildDate>$this->LastBuildDate</lastBuildDate>$RN"; print " <pubDate>$this->PubDate</pubDate>$RN"; print " <docs>http://blogs.law.harvard.edu/tech/rss</docs>$RN"; print " <managingEditor>$this->ManagingEditor</managingEditor>$RN"; print " <webMaster>$this->WebMaster</webMaster>$RN"; } function PrintBody($Title,$Link,$Description,$Category,$PubDate) // печать тела { $RN="\r\n"; print " <item>$RN"; print " <title>$Title</title>$RN"; print " <link>$Link</link>$RN"; print " <description>$Description</description>$RN"; print " <category>$Category</category>$RN"; print " <pubDate>$PubDate</pubDate>$RN"; print " <guid>$Link</guid>$RN"; print " </item>$RN"; } function PrintFooter() // печать заголовка { $RN="\r\n"; print " </channel>$RN"; print "</rss>$RN"; }
} ?>
|
Я думаю что надо как-то запрос переписать.. SET NAMES utf8 вроде добавил но не помогает... или это только для UPDATE, INSERT? Если использовать iconv то что изменить нужно и как? Это сообщение отредактировал(а) fleetboss - 24.11.2009, 15:19
|