Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: проблема с XML кодировкой
 
 автор: himera7   (26.11.2007 в 00:55)   письмо автору
 
 

читаю сначала из xml файла данные на русском windows-1251 потом добавляю данные и переписываю весь фаил XML но при этом старые данные принимают вид краказяблы

<?php
class mathematica
 
{
  var 
$array_Q = array();
  var 
$array_U = array();
  var 
$array_S = array();
  var 
$array_W = array();
  var 
$array_T = array();
  var 
$array_F = array();

  var 
$insideItemtQ false;
  var 
$insideItemtU false;
  var 
$insideItemtS false;
  var 
$insideItemtW false;
  var 
$insideItemtT false;
  var 
$insideItemtF false;
  var 
$insideItemt false;
  var 
$tag "";


  function 
startElement($parser$tagName$attrs)
  {
      
$this->tag $tagName;

     switch(
$tagName)
     {
     case 
"TRANSPORT":
     
$this->insideItemT true;
     break;
     case 
"PLACEOF_QUARRYING":
      
$this->insideItemQ true;
     break;
     case 
"PLACEOF_UNSHIPPING":
      
$this->insideItemU true;
     break;
     case 
"UNSHIPPING":
      
$this->insideItemS true;
     break;
     case 
"WORKING":
      
$this->insideItemW true;
     break;
          case 
"FINAL_PLACE":
      
$this->insideItemF true;
     break;
     case 
"ITEM":
      
$this->insideItem true;
     break;
     }

  }

  function 
endElement($parser$tagName)
  {
     switch(
$tagName)
     {
     case 
"TRANSPORT":
     
$this->insideItemT false;
     break;
     case 
"PLACEOF_QUARRYING":
      
$this->insideItemQ false;
     break;
     case 
"PLACEOF_UNSHIPPING":
      
$this->insideItemU false;
     break;
     case 
"UNSHIPPING":
      
$this->insideItemS false;
     break;
     case 
"WORKING":
      
$this->insideItemW false;
     break;
          case 
"FINAL_PLACE":
      
$this->insideItemF false;
     break;
     case 
"ITEM":
      
$this->insideItem false;
     break;
     }


  }

   function 
returnArray($ret)
   {
       if(
$ret==0)
     return 
$this->array_T;
       if(
$ret==1)
     return 
$this->array_Q;
       if(
$ret==2)
     return 
$this->array_U;
    if(
$ret==3)
     return 
$this->array_S;
    if(
$ret==4)
     return 
$this->array_W;
    if(
$ret==5)
     return 
$this->array_F;

   }


  function 
characterData($parser$data)
  {
   if(
$this->insideItem==true)
     switch(
$this->tag)
     {
     case 
$this->insideItemT:
      
array_push ($this->array_T$data);
     break;
     case 
$this->insideItemQ:
      
array_push ($this->array_Q$data);
     break;
     case 
$this->insideItemU:
    
array_push ($this->array_U$data);
     break;
     case 
$this->insideItemS:
       
array_push ($this->array_S$data);
     break;
     case 
$this->insideItemW:
       
array_push ($this->array_W$data);
     break;
          case 
$this->insideItemF:
       
array_push ($this->array_F$data);
     break;

     }

  }
}

$xml_parser xml_parser_create();
$rss_parser = new mathematica();

xml_set_object($xml_parser, & $rss_parser);
xml_set_element_handler($xml_parser"startElement""endElement");
xml_set_character_data_handler($xml_parser"characterData");

$fp fopen("load.xml""r")
   or die(
"Error reading RSS data!");
while(
$data fread($fp4096))
{

  
xml_parse($xml_parser$datafeof($fp))
   or die(
"Error parsing RSS data!");
}
fclose($fp);

$ttt $rss_parser->returnArray(0);
$qqq $rss_parser->returnArray(1);
$uuu $rss_parser->returnArray(2);
$sss $rss_parser->returnArray(3);
$www $rss_parser->returnArray(4);
$fff $rss_parser->returnArray(5);


if(isset(
$_POST['POQ'])) 
 
$POQ $_POST['POQ'];
if(isset(
$_POST['POU'])) 
 
$POU $_POST['POU'];
if(isset(
$_POST['UNS'])) 
 
$UNS $_POST['UNS'];
if(isset(
$_POST['WOR'])) 
 
$WOR $_POST['WOR'];
if(isset(
$_POST['TRT'])) 
 
$TRT $_POST['TRT'];
if(isset(
$_POST['FPL'])) 
 
$FPL $_POST['FPL'];
 
if(
$POQ && $POU && $UNS && $WOR && $TRT && $FPL)
 {

 
$xml "<?xml version=\"1.0\" encoding=\"windows-1251\"?>";
 
 
array_push ($qqq$POQ);
 
array_push ($uuu$POU);
 
array_push ($sss$UNS);
 
array_push ($www$WOR);
 
array_push ($ttt$TRT);
 
array_push ($fff$FPL);
 
 
//print_r($qqq);
  
  
foreach($qqq  as $i => $v)
   
$qqq[$i] = "<item>".$v."</item>";
    foreach(
$uuu  as $i => $v)
   
$uuu[$i] = "<item>".$v."</item>";
     foreach(
$sss  as $i => $v)
   
$sss[$i] = "<item>".$v."</item>";
     foreach(
$www  as $i => $v)
   
$www[$i] = "<item>".$v."</item>";
     foreach(
$ttt  as $i => $v)
   
$ttt[$i] = "<item>".$v."</item>";
     foreach(
$fff  as $i => $v)
   
$fff[$i] = "<item>".$v."</item>";
   
  
// echo "|".implode(" ",$fff)."|";
  
  
$xml_2 "<transport_data><placeof_quarrying>".implode(" ",$qqq)."</placeof_quarrying><placeof_unshipping>".implode(" ",$uuu)."</placeof_unshipping><unshipping>".implode(" ",$sss)." </unshipping><working>".implode(" ",$www)."</working><transport>".implode(" ",$ttt)."</transport><final_place>".implode(" ",$fff)."</final_place></transport_data>";
  
  
$xml $xml.$xml_2;
  
  echo 
"$xml";
  
      
$fp fopen ("load.xml""w");
     
fwrite ($fp$xml);
     
fclose ($fp);

 
 }



?>

   
 
 автор: KPETuH   (26.11.2007 в 09:05)   письмо автору
 
   для: himera7   (26.11.2007 в 00:55)
 

а разве XML не должен быть в кодировке UTF-8?

   
 
 автор: himera7   (26.11.2007 в 10:23)   письмо автору
 
   для: KPETuH   (26.11.2007 в 09:05)
 

мне нужен windows 1251

   
 
 автор: CrazyAngel   (26.11.2007 в 10:34)   письмо автору
 
   для: himera7   (26.11.2007 в 10:23)
 

хм... работаете с xml в utf-8 формате.

когда достаете чтоб показать,перекодируйте на лету в нужную вам кодировку

   
 
 автор: himera7   (26.11.2007 в 15:01)   письмо автору
 
   для: CrazyAngel   (26.11.2007 в 10:34)
 

фишка в чем! в пхп фаиле все отображается нормально , все слова на русском пишутся нормально. но когда я переписываю данные в хмл ,то те данные которые были в фаиле до обробтки пхп становятся краказяблами а новые остаются нормально (переданные методом пост)

   
 
 автор: KPETuH   (26.11.2007 в 15:04)   письмо автору
 
   для: himera7   (26.11.2007 в 15:01)
 

когда ознакамливался с XML вездн жирным шрифтом писали по избежание проблем юзайте UTF-8, и вообще чем вас UTF-8 не устраивает...

   
 
 автор: michail1982   (26.11.2007 в 15:07)   письмо автору
 
   для: himera7   (26.11.2007 в 00:55)
 

попробуйте для пхп скрипта в хеадер поставить 1251
походу у вас сам браузер кодировку по умолчанию берёт, соотв в этой кодировке хмл и открывает

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования