Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [XML] problem z czytaniem wyników (polskie znaki)
Vasquez21
post
Post #1





Grupa: Zarejestrowani
Postów: 213
Pomógł: 0
Dołączył: 2.11.2004
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


Witam,

Mam problem z odczytaniem polskich liter z xml'a. Troszkę przeszukałem już forum, ale być może źle szukam, a być może nie było takiej sytuacji.

Nie wiem dlaczego ale podczas czytania z bazy wyników otrzymuję dziwne symbole, takie jak:
?
?
Ä
?
?
?
?
?
Â
?

Znalazłem w necie, że zapis: mb_convert_encoding($player[3],"HTML-ENTITIES","UTF-8") pozwolił mi się pozbyć tych dziwnych symboli i wreszcie xml został rozpoznany przez parser.
Teraz jednak nie wiem co zrobić, żeby zobaczyć polskie litery... bo tym razem mam zamiast polskich liter: & # 3 2 2; itp.
Poniżej wrzucam kod z pliku php.
Baza jest ustawiona na utf-8, plik też jest zapisany jako utf-8 (przynajmniej tak mi pokazuje jEdit)

  1. <?php
  2. header('Content-Type: text/html; charset = UTF-8');
  3.  
  4. ini_set('display_errors', 'On');
  5. include "../connect.php";
  6.  
  7. class XmlWriterClassVasquez {
  8. var $xml;
  9. var $indent;
  10. var $stack = array();
  11.  
  12. function XmlWriterClassVasquez($indent = ' ') {
  13. $this->indent = $indent;
  14. $this->xml = '<?xml version="1.0" encoding="utf-8"?>'."\n";
  15. }
  16. function _indent() {
  17. for ($i = 0, $j = count($this->stack); $i < $j; $i++) {
  18. $this->xml .= $this->indent;
  19. }
  20. }
  21. function push($element, $attributes = array()) {
  22. $this->_indent();
  23. $this->xml .= '<'.$element;
  24. foreach ($attributes as $key => $value) {
  25. $this->xml .= ' '.$key.'="'.htmlentities($value).'"';
  26. }
  27. $this->xml .= ">\n";
  28. $this->stack[] = $element;
  29. }
  30. function element($element, $content, $attributes = array()) {
  31. $this->_indent();
  32. $this->xml .= '<'.$element;
  33. foreach ($attributes as $key => $value) {
  34. $this->xml .= ' '.$key.'="'.htmlentities($value).'"';
  35. }
  36. $this->xml .= '>'.htmlentities($content).'</'.$element.'>'."\n";
  37. }
  38. function emptyelement($element, $attributes = array()) {
  39. $this->_indent();
  40. $this->xml .= '<'.$element;
  41. foreach ($attributes as $key => $value) {
  42. $this->xml .= ' '.$key.'="'.htmlentities($value).'"';
  43. }
  44. $this->xml .= " />\n";
  45. }
  46. function pop() {
  47. $element = array_pop($this->stack);
  48. $this->_indent();
  49. $this->xml .= "</$element>\n";
  50. }
  51. function getXml() {
  52. return $this->xml;
  53. }
  54. }
  55.  
  56. $xml = new XmlWriterClassVasquez();
  57.  
  58. $array = array();
  59.  
  60. $q = mysql_query("SELECT ID_user, nick, rank, firstname, lastname FROM rank_users") or die("blad1");
  61. while ($result = mysql_fetch_array($q))
  62. {
  63. array_push($array, array($result['ID_user'], $result['nick'], $result['rank'], $result['firstname'], $result['lastname']));
  64. }
  65.  
  66. $xml->push('players');
  67. foreach ($array as $player) {
  68. $xml->push('player');
  69. $xml->element('PlayerId', $player[0]);
  70. $xml->element('PlayerAlias', mb_convert_encoding($player[1],"HTML-ENTITIES","UTF-8"));
  71. $xml->element('PlayerRank', $player[2]);
  72. $xml->element('PlayerName', mb_convert_encoding($player[3],"HTML-ENTITIES","UTF-8"));
  73. $xml->element('PlayerSurname', mb_convert_encoding($player[4],"HTML-ENTITIES","UTF-8"));
  74. $xml->pop();
  75. }
  76. $xml->pop();
  77.  
  78. print $xml->getXml();
  79. ?>


Ten post edytował Vasquez21 30.08.2012, 14:09:24
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 6)
Crozin
post
Post #2





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


1. Czy wyświetlając dane jako normalny tekst występują problemy z kodowaniem (bez babrania się z mb_convert_encoding)?
2. Po co tworzysz jakieś kulawe narzędzie do tworzenia dokumentu XML, skoro istnieją gotowe, takie jak DOM czy XMLWriter?
Go to the top of the page
+Quote Post
Vasquez21
post
Post #3





Grupa: Zarejestrowani
Postów: 213
Pomógł: 0
Dołączył: 2.11.2004
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


ad 1, tak... wywala coś w stylu:
Znaleziono nieprawidłowy znak w zawartości tekstowej. Błąd podczas przetwarzania zasobu 'adres strony... <PlayerSurname>Ga&Aring;

ad 2, prawdę powiedziawszy potrzebowałem czegoś na szybko, znalazłem gotowe rozwiązanie i użyłem.

Go to the top of the page
+Quote Post
viking
post
Post #4





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


Jak łatwo się domyślić w poprawnym dokumencie XML nie ma prawa wystapić bezpośrednio &, zamień wcześniej na &amp;


--------------------
Go to the top of the page
+Quote Post
Vasquez21
post
Post #5





Grupa: Zarejestrowani
Postów: 213
Pomógł: 0
Dołączył: 2.11.2004
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


hmm ale w bazie nie ma &... to jest coś co wyskakuje mi przy polskich literach właśnie.
Przepraszam jesli źle Cię zrozumiałem.
Go to the top of the page
+Quote Post
viking
post
Post #6





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


A nie, sorki, źle spojrzałem. Tam masz &Aring;. Masz set names przy połączeniu ustawione?


--------------------
Go to the top of the page
+Quote Post
Vasquez21
post
Post #7





Grupa: Zarejestrowani
Postów: 213
Pomógł: 0
Dołączył: 2.11.2004
Skąd: Jaworzno

Ostrzeżenie: (0%)
-----


Nie miałem, teraz dodałem... cały mój connect wygląda teraz tak:
  1. mysql_connect ('zzz','zzz','zzz') or die('error: Błąd z połączeniem');
  2. mysql_select_db ('zzz') or die('error: Nie znaleziono bazy');
  3. mysql_query("SET NAMES 'utf-8'");
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 12:09