Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [XML][PHP]Kodowanie XML
Forum PHP.pl > Forum > Przedszkole
djgarsi
Witam.
Walczę z kodem od rana na wszelkie sposoby i nie mogę sobie poradzić. Otóż pobieram kursy walut z NBP w XMLu i "próbuję" je jakoś obrobić.
Mój problem polega na tym że coś jest nie tak z kodowaniem. Różne znaki zapytania i inne krzaki pokazuje.

Mój kod:
  1. <?php
  2. ini_set('display_errors', 1);
  3.  
  4. if (!function_exists('curl_init')){
  5. die('Sorry cURL is not installed!');
  6. }
  7. $ch = curl_init();
  8. curl_setopt($ch, CURLOPT_URL, "http://www.nbp.pl/kursy/xml/LastA.xml");
  9. curl_setopt($ch, CURLOPT_REFERER, "http://www.example.org/yay.htm");
  10. curl_setopt($ch, CURLOPT_USERAGENT, "MozillaXYZ/1.0");
  11. curl_setopt($ch, CURLOPT_HEADER, 0);
  12. curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  13. curl_setopt($ch, CURLOPT_TIMEOUT, 10);
  14. $output = curl_exec($ch);
  15. curl_close($ch);
  16.  
  17. $output = mb_convert_encoding($output, 'iso-8859-2', 'utf-8');
  18. $liczba = (substr_count($output, 'pozycja')/2)-1;
  19.  
  20. for($i=0;$i<=$liczba;$i++)
  21. {
  22. $doc = new DOMDocument();
  23. @$doc->loadHTML($output);
  24. $nodes1 = $doc->getElementsByTagName('nazwa_waluty');
  25. $wynik1 = $nodes1->item($i)->nodeValue;
  26. $nodes2 = $doc->getElementsByTagName('kod_waluty');
  27. $wynik2 = $nodes2->item($i)->nodeValue;
  28. $nodes3 = $doc->getElementsByTagName('kurs_sredni');
  29. $wynik3 = $nodes3->item($i)->nodeValue;
  30.  
  31. echo 'Waluta: <strong>'.$wynik1.'</strong> ('.$wynik2.') kosztuje dzisiaj <strong>'.$wynik3.'</strong>zł<br />';
  32. }
  33. ?>
nospor
A co ci konkretnie się źle wyświetla? Bo u mnie Twój kod wyświetla wszystko idealnie.
Maniek1313
Wrzuć sobie kod do Notepad ++ i ustaw sobie kodowanie pliku na utf-8 (bez BOM) , następnie zapisz plik i zobacz czy pomoże.
mortus
Argumenty określające kodowanie w funkcji mb_convert_encoding powinny być odwrotnie podane
  1. $output = mb_convert_encoding($output, "UTF-8", "ISO-8859-2");


@nospor: Dokument jest w ISO-8859-2, a ma być w UTF-8. Strona też w UTF-8. Przyjrzyj się dokładnie, a zobaczysz, że jednak nie wszystko się idealnie wyświetla.
@Maniek1313: Tutaj BOM nie ma nic do rzeczy.
djgarsi
Cytat(mortus @ 6.12.2012, 12:32:20 ) *
Argumenty określające kodowanie w funkcji mb_convert_encoding powinny być odwrotnie podane
  1. $output = mb_convert_encoding($output, "UTF-8", "ISO-8859-2");


@nospor: Dokument jest w ISO-8859-2, a ma być w UTF-8. Strona też w UTF-8. Przyjrzyj się dokładnie, a zobaczysz, że jednak nie wszystko się idealnie wyświetla.
@Maniek1313: Tutaj BOM nie ma nic do rzeczy.






takie coś wyświetla.
mortus
A w sekcji head umieściłeś znacznik meta z określeniem kodowania strony?
  1. <!-- dla HTML5 -->
  2. <meta charset="utf-8">
  3. </head>
Maniek1313
@up przetestowałem to co napisałeś i są krzaczki
przykład
Kod
dolar amerykański
forint (Węgry)
djgarsi
Cytat(mortus @ 6.12.2012, 12:39:06 ) *
A w sekcji head umieściłeś znacznik meta z określeniem kodowania strony?
  1. <!-- dla HTML5 -->
  2. <meta charset="utf-8">
  3. </head>


O masz, pomogło smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.