#1 16. 2. 2010 22:09

JAM3SoN
Člen
Místo: Púchov
Registrovaný: 9. 7. 2009
Příspěvky: 44
Web

Problem s kodovanim

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

 

#2 17. 2. 2010 0:38

phx
Moderator
Místo: HK
Registrovaný: 17. 4. 2008
Příspěvky: 780
Web

Re: Problem s kodovanim

Moc toho o tom netusim, ale typuji ze to vraci v kodovani UTF-8. Takze but nejak prenastavit a nebo konvertovat.

Offline

 

#3 17. 2. 2010 10:54

pete
Člen
Registrovaný: 22. 10. 2009
Příspěvky: 24

Re: Problem s kodovanim

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

 

#4 18. 2. 2010 9:14

JAM3SoN
Člen
Místo: Púchov
Registrovaný: 9. 7. 2009
Příspěvky: 44
Web

Re: Problem s kodovanim

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>&#197;&#160;koda OKt&#195;&#161;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

 

#5 18. 2. 2010 9:51

JAM3SoN
Člen
Místo: Púchov
Registrovaný: 9. 7. 2009
Příspěvky: 44
Web

Re: Problem s kodovanim

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

 

#6 18. 2. 2010 11:21

pete
Člen
Registrovaný: 22. 10. 2009
Příspěvky: 24

Re: Problem s kodovanim

ahoj, ak si vypises to co ti pride v tom xml:

<?php
echo '&#197;&#160;koda OKt&#195;&#161;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

 

#7 18. 2. 2010 11:52

JAM3SoN
Člen
Místo: Púchov
Registrovaný: 9. 7. 2009
Příspěvky: 44
Web

Re: Problem s kodovanim

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

 

Zápatí