Модераторы: diadiavova
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> RSS лента, кодировка... отображение вопросиков вместо русских 
:(
    Опции темы
fleetboss
Дата 17.11.2009, 16:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 30.7.2009

Репутация: нет
Всего: нет



На сайте информацию из 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("<" => "&lt;", ">" => "&gt;",'"' => "&quot;","&" => "&amp;");
    $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
PM MAIL   Вверх
fleetboss
Дата 24.11.2009, 15:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 150
Регистрация: 30.7.2009

Репутация: нет
Всего: нет



блин все не могу разобраться... почему из mysql базы где хранится записи с русскими буквами выдает на сайте вопросами... если написать в файле то будет ок... а из базы он выдает вопросами...
может в query надо что-то добавить?
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

Прежде чем опубликовать вопрос, попробуйте воспользоваться поиском - возможно тема уже поднималась.

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | XML, XSL | Следующая тема »


 




[ Время генерации скрипта: 0.0444 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.