Zdravíčko,
mám problém s kodováním načítaného XML souboru.
Je tam definované kódování:
<?xml version='1.0' encoding='windows-1250'?>
V hlavičce stránky kóduji:
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
A přesto se mi při vyechování na stránce zobrazuje např.:
"proĹ·lĂ· expirace" místo "prošlá expirace"
XML soubor:
http://velkoobchod.usaction.cz/export-product.asp?nID=BA6C5835-0671-4769-B293-A0EDCD374ACE&type=product
Díky za pomoc
Záleží na tom, jakým způsobem soubor načítáš - include, fread, file_get_contents, nebo nějak jinak?
Jinak v té hlavičce k XML by místo apostrofů (') měly být uvozovky ("). To by však nemělo být řešením. A přidaný odkaz se mi nedaří z nějakého důvodu otevřít.
Načítám to takto:
$xml=simplexml_load_file($nas_soubor);
A soubor vypadá asi takto - zjednodušeně:
<shop>
<PRODUCT>
<NAZEV>
SW IL-2 Sturmovik
</NAZEV>
<KOD>75</KOD>
<POPIS>
Myslíte si, že jeste již hráli simulátory snad všech letadel? Co takhle zkusit pilotovat jednu z nejničivějších leteckých zbraní II. světové války - Iljušina IL - 2 Sturmovik.
</POPIS>
</PRODUCT>
</shop>
Ten soubor už by měl jít z uvedené adresy načíst, byl to jen lehký výpadek asi ...
Už vím proč soubor nefunguje - je potřeba v adrese před &type=product smazat mezeru. :/
VYŘEŠENO! Už mě jen napadlo, jestli není špatně zadané kodování v xml, v tomto případě windows-1250. Zkusil jsem tedy pomocí iconv() překódovat z jiných kódování. A ejhle! Na první pokus z UTF-8 na windows-1250 to začalo fachat.
Jinak samozřejmě díky za spolupráci!
To byla další věc, kterou jsem ti chtěl navrhnout k postupu řešení. Pokud takto načítáš cizí xml soubory, vyplatí se kódování vždy kontrolovat (i kvůli případným pozějším změnám kódování od poskytovatele). Mohlo by se ti proto hodit http://latrine.dgx.cz/autoczech-aneb-automaticka-detekce-kodovani
___
Mimochodem, odkazované XML se mi nakonec podařilo načíst. Ovšem bylo docela dlouhé, vygenerovat jej serveru zabralo přes minutu. Na druhý pokus o načtení už server vrátil chybu "Transaction (Process ID 79) was deadlocked on lock resources with another process and has been chosen as the deadlock victim.". Buď mají dočasně server silně přetížený nebo vadně nastavný - v každém případě tyto dlouhé odezvy (přes minutu) a výpadky budou zdržovat i tvůj skript -- vyplatí se proto kontrolovat třeba dobu běhu, případně nastavit delší max_execution_time (což na wz.cz není možné).
Freeze: ad1) díky, určitě se hodí, ad2) zkusím tedy nastavit max_execution_time, web o který se jedné nehostuje na wz ale na banánu.
Díky za rady.