ďťż

[PHP] Czytniki RSS Jak radzą sobie z UTF-8?

       

Podstrony


telcocafe

Napisałem klasę do generowania RSS - na razie na próbę, aby zobaczyć, co z tego w ogóle wyjdzie. Wykorzystałem SimpleXML. Kod źródłowy XML jest mierny. Zamiast znaków UTF-8 są encje. Może standardy XML nie pozwalają ich umieszczać poza CDATA, jednak problem w tym, że SimpleXML nie potrafi stworzyć <![CDATA[.

Przykład:
Daj&#x105;c przyk&#x142;ad banalny: kt&#xF3;&#x17C; z nas kiedy&#x15B; nie podejmowa&#x142; si&#x119; trudnego wysi&#x142;ku fizycznego maj&#x105;c na wzgl&#x119;dzie uzyskanie z tego korzy&#x15B;ci?

Pozostaje jeszcze DOM, ale w PHP trzeba pisać więcej kodu niż w Javascript. Nawet dla ciągu tekstowego:$tekst = $dom->createTextNode(...)Potem dla każdego elementu i tekstu obowiązkowo: appendChild()

Jak czytniki RSS radzą sobie z plikami .xml zakodowanymi w UTF-8?

Być może lepiej stworzyć szablon ze strukturą pliku RSS? Tylko to nie gwarantuje poprawności dokumentu XML.



o ile pamiętam to poprostu simpleXML nie obsługuje UTF-8, albo znajdź inną klasę, albo iconv na wlocie i wylocie i z głowy. Sam XML jako taki nie ma tu nic do rzeczy, zwyczajnie PHP jest miejscami jeszcze przestarzałe.
Użytkownik someone edytował ten post 15 lipiec 2009, 22:21
jak to nie obsługuje podstawowego kodowania dokumentów XML? to co widzisz to entities, które trzeba zdekodowac. http://nadeausoftwar...tities_web_page

Może się mylę, ale mnie to wygląda jakby tekst kodowany w UTF-8 był odczytywany przez simpleXML jako ASCII. Wydaje mi się że nie ma potrzeby kodowania tych znaków jako encji. Co nie zmienia faktu, że entity_decode powinno załatwić sprawę ;)



entity_decode() nic nie pomoże, jeżeli SimpleXML i tak zamieni wielobajtowe znaki UTF-8 na encje przy zapisie XML.

A próbowałeś? :P Do jobmastera muszę parsować różne XMLe i dekodowanie encji załatwia sprawę. Niektóre generatory XMLów dość agresywnie enkodują różne znaki żeby zapewnić poprawność XMLa.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • nvm.keep.pl

  • Sitedesign by AltusUmbrae.