Skocz do zawartości

simplexml_load_file() i kodowanie


Kleszcz

Rekomendowane odpowiedzi

1. Wyciągam dane z MySQL z ustawionym

$sql = "SET NAMES 'latin2'";

2. Generuję plik .xml , ustawiam

$zmienna.= "<?xml version=\"1.0\" encoding=\"iso-8859-2\"?>";

3. Odczytuję funkcją

$dane = simplexml_load_file('plik.xml');

w dokumencie z ustawionym kodowaniem iso-8859-2 i polskich znaków brak. Próbowałem z iconv(), bez skutku.

Jak to ugryźć ?

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

ja to rozwiązałem tak, że konweruje to co mi potrzebne

Dzięki za podpowiedź. Tak zrobiłem:

<?php
$dane = simplexml_load_file('plik.xml');
foreach($dane -> wartosc as $wartosc){
  echo '<p align="justify">autor: '.$wartosc -> autor.'<br/> tytuł: '.$wartosc -> tytul.'<br/>';
  $opis = iconv("UTF-8","ISO-8859-2",$wartosc->opis);
  echo $opis.'<hr></p>';	  
  }
?>

... i na razie działa :-)

Odnośnik do komentarza
Udostępnij na innych stronach

Póki nie trafisz na autora np. Ąckiego czy Frąckowiaka piszącego utwór pod tytułem "Zażółć gęślą jaźń" to będzie ok ;). Autora i Tytuł też bym dekodował tak na wszelki wypadek.

Jasne... php nie umiem ale analogię potrafię dostrzec i daną operację powtórzyć :P

Następny problem przed mną: jak to stronicować... ? :-D

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

moja funkcja dzialajaca w 100%

 function rss($link){
$rss = simplexml_load_file($link);


  foreach($rss -> channel -> item as $item){
  foreach($item -> enclosure as $enclosure){
  if(isset($enclosure['url'])){

	 }else{}
  }

   $url = iconv("UTF-8","ISO-8859-2","$item->link");
  $title = iconv("UTF-8","ISO-8859-2","$item->title");
 $description = iconv("UTF-8","ISO-8859-2","$item->description");
	mysql_query("SET NAMES 'latin2'");
	echo $title.'<br>';
		$title = str_replace(Array("'"), array(""), $title);	
	$baza = mysql_query('SELECT `title` FROM `rss` WHERE `title` LIKE \'%'.$title.'%\'');
	$mysql1 = mysql_num_rows($baza);
	if($mysql1 == '0')
	{
		$sql = mysql_query("INSERT INTO rss SET url = '".$url."', title='".$title."', description='".$description."', time = NOW()");
   }
	 	if($mysql1 > '0')
	{
	}

  }
return $sql;
}

pozniej jeszcze na stronie na ktorej maja sie wyswietlac robie

mysql_query("SET NAMES 'latin2'");

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności