PHP fóra: Builder | JakPsatWeb | Webtrh
Nejste přihlášen(a)
Zdravim, mam problem s kodovanim, ktore mi prichadza z XML-RPC volania(pouzivam PEAR XML_RPC2) a toto sa mi deje s diakritikou: TT Coupé 1.8 Vie mi niekto poradit, ako by som mohol tie hnusne znaky(ktore v tomto pripade maju byt é) konvertovat do normalnej podoby? Som z toho zufaly :(
Vdaka
Offline
Cau, mozes presnejsie popisat ci ty robis sluzbu (takze tebe klienti posielaju poziadavky), alebo ty si ako klient a toto dostanes ako odpoved. Ked ty si ako klient, skus urobit obycajny request a vyprintuj si xml. Mozes to skusit napr. cez curl:
<?php
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, '...url...'); // zmen na url kde posielas poziadavku
curl_setopt($ch, CURLOPT_FRESH_CONNECT, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1); // zmen ci chces post alebo get
curl_setopt($ch, CURLOPT_POSTFIELDS, '... tvoje xml ...'); // zmena na xml ktore posielas
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$response = curl_exec($ch);
curl_close($ch);
echo $response;exit;
?>
Ak sa tam tie „skarede znaky“ nachadzaju tak je problem na ich strane, takze ty stym moc neurobis.
Editoval pete (17. 2. 2010 10:55)
Offline
Pete: Ahoj, ďakujem za snippet, na základe neho som zistil, že chyba musí byť u mňa. Neviem však kde, na testovacom serveri mi ten istý skript(ten istý dump DB, tie isté súbory) fungujú v poriadku, no na production serveri(úplne iný server) mi to robí takéto nepekné veci. Aby som ešte upresnil, ja som server a dostávam XML s dátami.
XML_RPC2 má peknú funkciu debug, ktorá vypíše ako request tak aj result XML, v ňom mám časť:
<?php
<value>
<string>Škoda OKtávia</string>
</value>
?>
.. lenže na production sa do DB vloží toto:
<?php
Škoda OKtávia 1.6
?>
.. pričom na vývojovom to prejde do DB v poriadku.
Offline
Pokročil som trošku ďalej, použil som v skripte serveru, kde to zlyháva, funkciu mb_detect_encoding na daný prijímaný string a vracia mi UTF-8. Keď pred vložením do DB ručne prepíšem vkladaný string na nejaký string s diakritikou, tak ten sa uloží v poriadku. Je to akési zvláštne :)
Offline
ahoj, ak si vypises to co ti pride v tom xml:
<?php
echo 'Škoda OKtávia';
?>
tak je to to iste co sa ti vklada do db.
Preco neposielas veci s diakritikou v xml? zacni xml s ‚<?xml version=„1.0“ encoding=„UTF-8“ ?>‘ a vloz tam tie pismena s diakritikou. Jednie veci co nemozes mat v xml su ‚&‘, ‚<‘ a ‚>‘. (samozrejme ak sa to da cez to xml_rpc2).
Daj mi vediet ci si pokrocil alebo nie prosim ta.
Offline
No nikdy viac používať XML_RPC2 :) Je to package veľmi veľa tried, ktoré maju v sebe viacnásobné require_once a bolo problém to rozbehať v zložkách. Pri konfigurácii serveru som pridal do $options encoding ⇒ utf8, no nepomohlo, dosť si to robilo čo chcelo. Rozdiel medzi dev a live serverom bol ten, že na deve sa kódovanie nejakým mne nepochopiteľným spôsobom upravovalo samo. Na live serveri som musel použiť mb_convert_encoding z UTF-8 do iso! Našťastie to potom začalo pracovať tak ako má, takže problém mám vyriešený, ale nejaký rozumný záver z toho žiaľ nebude.
Offline