Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php] z bazy przez php do xml - kodowanie
lando
post 17.03.2004, 23:21:40
Post #1





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 17.03.2004
Skąd: Gorzów Wlkp.

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


Witam wszystkich.

Jako że pierwszy raz to dobry wieczór.
Mam taki oto problem:
Za pomocż php z bazy pobieram sobie jakieś tam dane i robie z tego xml, używając najprostszego kodu pod słońcem:
[php:1:1da1dc1325]<?php
$newsy=array();
$i=0;

$pyt=mysql_query("SELECT * FROM spispod ORDER BY ID") or die (mysql_error());

$myxml="<?xml version="1.0" encoding="UTF-8" ?>
<calemenu>";

while($odp=mysql_fetch_object($pyt))
{
$myxml.="<menu id="".$i."">
<nazwa>".$odp->nazwa."</nazwa>
<nazwatxt>".$odp->nazwatxt."</nazwatxt>
</menu>";
$i++;
}

$myxml.="</calemenu>";

echo $myxml;
?>[/php:1:1da1dc1325]

plik php jest zapisany w utf-8, mimo to polskie literki (docelowo hiszpańskie) nie pokazują się, wyświetla się taki błąd:
Cytat
Znaleziono nieprawidłowy znak w zawartości tekstowej. Błąd podczas przetwarzania zasobu 'http://localhost/cv/php/menu.php'. Wiersz 16, Pozycja 13

<nazwa>

siedzę nad tym juz długo. Wiecie może jak ten problem rozwiązać?
Go to the top of the page
+Quote Post
kszychu
post 18.03.2004, 10:50:22
Post #2





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


A w bazie masz jakie kodowanie? Też utf czy może coś innego? Jeśli coś innego zainteresuj się funkcją iconv().


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
lando
post 18.03.2004, 11:00:43
Post #3





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 17.03.2004
Skąd: Gorzów Wlkp.

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


nie mam pojęcia jak sprawdzić kodowanie w jakim to jest w bazie zapisane. wiem tylko, że tabele są w myISAM, ale to nie o to chodzi. mógłbyś powiedzić jak to sprawdzić? z iconv() chyba nie bedzie dobrze, bo nie moge nic dodawać, ani grzebać w ustawieniach php na serwerze. po prostu nie mam takich uprawnień.
Go to the top of the page
+Quote Post
lando
post 19.03.2004, 12:24:13
Post #4





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 17.03.2004
Skąd: Gorzów Wlkp.

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


naprawde nikt nie wie. ehh a myslalem ze bedzie tak latwo i fajnie....
Go to the top of the page
+Quote Post
kszychu
post 19.03.2004, 12:28:56
Post #5





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


Najpierw sprawdź, jakie kodowanie masz w bazie. Jak? Wygeneruj tego xmla z różnymi kodowaniami, i zobacz, przy którym nie będziesz miał krzaków a polskie litery. Następnie poszukaj funkcji konwertującej z jednego kodowania na inne. Założę się, że jest takich funkcji sporo.


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
lando
post 19.03.2004, 12:34:18
Post #6





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 17.03.2004
Skąd: Gorzów Wlkp.

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


Sęk w tym, że nie moge takiego xml wygenerować, bo wyskakuje mi błąd, który opisałem w 1 poście. Jak na tym poziomie zmienić kodowanie nie mam zielonego pojęcia. Chętnie potestuje te kodowania, tylko powiedz jak....
Go to the top of the page
+Quote Post
kszychu
post 19.03.2004, 12:38:31
Post #7





Grupa: Przyjaciele php.pl
Postów: 2 712
Pomógł: 23
Dołączył: 27.10.2003
Skąd: z kontowni

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


A co jest w tym wierszu 16 w pliku, w którym pojawia się błąd?


--------------------
"Coś się kończy, coś się zaczyna." Andrzej Sapkowski
Go to the top of the page
+Quote Post
lando
post 19.03.2004, 12:52:03
Post #8





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 17.03.2004
Skąd: Gorzów Wlkp.

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


sprawdzałem i kombinowałem z tym. Błąd ten pojawia się zawsze tam, gdzie pierwszy raz pojawia się polska literka, w tym wypadku "Ł".
Go to the top of the page
+Quote Post
MaKARON
post 19.03.2004, 15:16:15
Post #9





Grupa: Zarejestrowani
Postów: 114
Pomógł: 1
Dołączył: 17.07.2003

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


Problem jest w tym, że próbujesz generować pliki w UTF-8 a php nie w takim formacie przechowuje stringi. Użyj jakiegoś xmlwritera - one maja zazwyczaj odpowiednie funkcje do konwersji. Skoro z polskimi znakami nie mają problemu, to z hiszpańskimi tez nie będą miały. Nie wiem, czy nie będziesz musiał wtedy zrezygnować z UTF na rzecz któregoś z ISO-8859-?.
Go to the top of the page
+Quote Post
lando
post 19.03.2004, 15:36:50
Post #10





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 17.03.2004
Skąd: Gorzów Wlkp.

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


a jakiego xmlwrite'a polecasz? Powiem szczerze, że nie jestem mocny w php, z reszta to widac. Chcialem tylko za pomoca php zrobic sobie najprostszego xml, a potem go polaczyc z flash'em. Najwieszy problem w tym wszystkim to te znaki.

Aha, czy cos bede musial instalowac na serwie? Bo jesli tak to takie rozwiazanie odpada, bo nie mam takich uprawnien. jestem zwyklym userem.
Go to the top of the page
+Quote Post
lando
post 19.03.2004, 17:27:30
Post #11





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 17.03.2004
Skąd: Gorzów Wlkp.

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


dla zinteresowanych link http://w3.creaciones-virtuales.com/php/menu.php. Heh dziwna z tym jest sprawa. Raz wyswietla sie blad, robimy F5 i pokazuje sie xml taki jak powinien byc. Niestety w obu przypadkach jak wezmiemy "pokaz źródło" literka "Á" nie pokazuje sie. naprawde to zaczyna mi to powoli bokiem wychodzic. Dlaczego tak jest i jak to poprawic?
Go to the top of the page
+Quote Post
MaKARON
post 20.03.2004, 15:04:17
Post #12





Grupa: Zarejestrowani
Postów: 114
Pomógł: 1
Dołączył: 17.07.2003

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


http://phpxmlclasses.sourceforge.net/ tutaj są ogólne klasy obsługi XML
http://www.phpclasses.org/browse/package/250.html - ja używam tej klasy, tam możesz ustawić kodowanie wejściowe. NIe trzeba instalować, to tylko klasa. Warto poeksperymentowac.
Go to the top of the page
+Quote Post
lando
post 21.03.2004, 22:48:34
Post #13





Grupa: Zarejestrowani
Postów: 10
Pomógł: 0
Dołączył: 17.03.2004
Skąd: Gorzów Wlkp.

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


no nie wiem. nie za silnie sie czuje w php, ale moze cos sie uda zrobic. czy moglbys mi wyslac ta klase na mejla lando20@interia.pl . mam problem zeby sciagnac ta klase ze strony.
Go to the top of the page
+Quote Post
e-Gandalf
post 13.04.2004, 18:32:39
Post #14





Grupa: Przyjaciele php.pl
Postów: 195
Pomógł: 0
Dołączył: 7.07.2003
Skąd: Warszawa

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


A ja bym Ci polecal zamiast wstawiac kod xml inline, stworzyc sobie dokument (w pamieci) a potem przez DOM wstawiac kolejne elementy/atrybuty. Z tego co mi wychodzi w testach DOMowy createTextNode w php 5 dziala dobrze i na UTF-8 pracuje poprawnie.
Wogule uwazam, ze obsluge UTF-8 to najbardziej pomijana zmiana od PHP4 - w tej chwili mam testowy kawalek serwisu ktory parsuje z bazy do XML, XML validuje z DTD (encje jezykowe), i transforumuje XSLT, a nastepnie wynik daje na ekran - wszystko pracuje w UTF-8 i napotkalem tylko jeden problem winksmiley.jpg
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 Wersja Lo-Fi Aktualny czas: 19.07.2025 - 05:30