mam sobie plik XML z którego potrzebuje wyciągnąć dane. Robię to przez simplexml_load_file(). Xml jak i plik php w którym chcę to wyświetlać są w kodowaniu iso-8859-2. Jak wiadomo stringi w obiekcie stworzonym przez funkcję simplexml_load_file() bedą w UTF-8.
Zastosowałem więc:
przed wyświetleniem.
$tresc = iconv('UTF-8', 'ISO-8859-2', $tresc);
Skrypt sobie działał aż do czasu kiedy w XML znalazł tekst hiszpański. Mówię okej - nie ma problemu zamienimy na encje i szafa gra... i tak grała dopóki niezauważyłem że po konwersji prze iconv() obcina tekst po tylko niektórych encjach... są to np. ñ (ñ), ¡ (¡) czy è (è) ...
czyli mamy:
$plik = simplexml_load_file('test.xml'); $tresc = $plik->pytanie->tresc; $tresc = iconv('UTF-8', 'ISO-8859-2', $tresc);
co przy stringu: "to jest tekst ñ ¡ è a to dalsza część"
przed iconv() mamy na stronie: "to jest tekst KRZAKI KRZAKI KRZAKI a to dalsza część" - bo string jest utf-ie
a po iconv() mamy: "to jest tekst "
do tej pory rozwiązałem to w sposób taki, że jak już mamy w xmlu encje w postaci &#cyferki; to w encjach zamieniam jeszcze znaki "&" i "#" na encje- i wtedy jest okej, ale moje pytanko - czy nie ma innego rozwiązania żeby to poprawnie wszystko wyświetlać bez przesadnej gimnastyki?
Co radzicie?