[ Nebojsa Marinkov @ 22.05.2012. 16:35 ] @
Pozdrav svima
Već nedelju dana se zezam sa jednim problemom oko ispisa naših slova (č, ć, đ).
Cilj je da isparsiram xml string koji dobijam preko web servisa i to radim na sledeći način

Code:

//povlačenje sadržaja stringa
$xml_string= file_get_contents($url);


Zaustavimo se ovde kada štampam dobijeni string dobijam xml sa zaglavljem <?xml version="1.0" encoding="UTF-8"?> i svim ostalim podacima među kojima su i reči kao: upravljaè , štampaè , Kuæište itd, a taj string skripta prepoznaje kao UTF-8.

Kada ubacim
Code:
header('Content-type: text/html; charset=utf-8');

ili ako PHP skriptu enkodiram u utf-8 onda dobijem one masne upitnike namesto svih naših slova.

Kada ubacim
Code:
header('Content-type: text/xml; charset=utf-8');
i probam to da odštampam dobijem Xml parser error na prvom č tj na prvom è.

konačno kada probam da isparsiram taj XML pomoću
Code:
$products = simplexml_load_string($xml_string);

dobijam grešku:

Citat:
parser error : Input is not proper UTF-8, indicate encoding ! Bytes: 0xE8 0x3C 0x2F 0x74


Probao sam da koristim funkcije utf8_encode, mb_convert_encoding($xml, 'UTF-8', mb_detect_encoding($xml)); iconv('UTF-8', "UTF-8", $xml);
str_replace("è", "č", $xml);
Probao sam sa php skriptom u ASCII, UTF8 i UTF8 without BOM.
Uvek ili drugačija brljoka od slova ili znakovi pitanja

Kontaktirao sam programera sa druge strane i poslao mi je screenshot kako se kod njega xml fajl ispravno prikazuje u browseru

Inače koristim notepad++.

Prvi put radim ovako nešto, i nemam ideju šta još da pokušam. Ako bi neko mogao da da kakav trag bio bih zahvalan

Edit:
Koristim WAMP na localhostu na 32-bitnom windowsu7
PHP 5.3.10
apache 2.2.21
[ webjunior @ 22.05.2012. 21:06 ] @
koji browser koristis? namesti da enkoding prepoznaje automatski...
[ pajaja @ 22.05.2012. 22:03 ] @
Pozdrav,

na osnovu primera koje si dao mogu da pretpostavim da taj xml string nije enkodovan kao utf-8, vec kao cp1250. Ako promenis charset na windows-1250 prikaz ce biti u redu. Takodje obrati paznju da iako su slicni i cesto se mesaju ISO-8859-2 i windows-1520 se ipak razlikuju, tako da je bitno da bas bude win1520. Proveri da li prvi karakter u stampac ima \0x9a hex vrednost, ili jednostavno samo probaj da odstampas xml sa windows-1520 charsetom, pa javi rezultat.
[ Nebojsa Marinkov @ 23.05.2012. 09:41 ] @
Citat:
webjunior: koji browser koristis? namesti da enkoding prepoznaje automatski...

Namestio sam da se encoding automatski prepoznaje i kaže da je UTF-8 i prikaz ipak nije dobar, ali....
Citat:
pajaja: ... Ako promenis charset na windows-1250 prikaz ce biti u redu. ...

Bingo! ubacim na vrhu jedan
Code:
header('Content-type: text/html; charset=windows-1250');

i konačno dobijam sve kako treba, YESS!! Znači, nikad ne bih rek'o.

Puno vam hvala na pomoći.
[ Milan M. Radovic @ 23.05.2012. 09:48 ] @
Prebaceno u CP1250. Sada nece praviti greske.

Code:
header('Content-Type: application/rss+xml; charset=ISO-8859-2');
echo "<?xml version=\"1.0\" encoding=\"ISO-8859-2\"?>";
[ Nebojsa Marinkov @ 23.05.2012. 10:41 ] @
Tačno. Evo sada je sve u redu po defaultu i bez onog dodatnog headera, premda header ne smeta ni ako ostane.
[ Milan M. Radovic @ 23.05.2012. 11:54 ] @
Citat:
Nebojsa Marinkov: Tačno. Evo sada je sve u redu po defaultu i bez onog dodatnog headera, premda header ne smeta ni ako ostane.

Bolje ne stavljaj... evo sad se javili... smeta im cp1250 i hoce UTf-8... :( Probacu konverziju iz UTF-8 u CP1250.