Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][XML][HTML] iconv a cyrylica
Forum PHP.pl > Forum > PHP
exood
Witam,
mam problem z kodowaniem. Mam skrypt, który wyciąga dane z xmla przetwarza i wypluwa na stronę. Strona jest w kodowaniu iso-8859-2, tak jak i XML w którym są dane.
Teraz pojawił się problem z cyrylicą, która w tym XML'u się znajduje (dodam dodatkowo, że owa cyrylica jest już zamieniona na encje - bo już kiedyś miałem problem z niektórymi obcymi znakami i było to rozwiązanie, które działało);
Xmla wczytuję za pomocą simplexml_load_file()
Obiekt utworzony przez ta funkcję jest jednak w kodowaniu innym niż iso-8859-2 a mianowicie jest w utf-8, dlatego dane przed wyświetleniem konwertuję za pomocą iconv()
  1. $tekst = $xml -> item -> text;
  2. $tekst = iconv("UTF-8","ISO-8859-2",$tekst);

i w tym momencie zmienna $tekst jest pusta ... i nie mam pojęcia dlaczego. skoro xml jest w iso potem przez funkcję jest konwertowany do utf-8 i żaden znak nie ginie, a odwrotnie nie działa ...
Doradzi ktoś jakieś rozwiązanie?

a byc może w htmlu da się wyświetlić jakiś fragment w kodowaniu innym niż reszta? (przydało by się winksmiley.jpg )
Noidea
Znaki cyrylicy masz zapisane jako encje w XML'u w takiej postaci?
  1. <elem>aaa &# 1046; bbb</elem>
//bez spacji w encji

Jeśli tak, to SimpleXML zamienia je z powrotem na rosyjskie litery i pewnie podczas konwersji UTF-8 -> ISO-8859-2 wywala ci błąd.


Prawidłowy względem standardu XML zapis to:
  1. <elem><![CDATA[aaa &# 1046; bbb]]></elem>
//bez spacji w encji

albo:
  1. <elem>aaa &amp;#1046; bbb</emel>
exood
dziękuję bardzo za pomoc - oczywiście działa smile.gif
dobrze jest się nowej rzeczy nauczyć winksmiley.jpg
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.