Page 1 of 1

XML εσφαλμένη εμφάνιση χαρακτηρων. [SOLVED]

Posted: Fri Feb 21, 2014 11:03 pm
by drest341
Γεια σας στη κοινότητα. Προσπάθησα να κατασκευάσω ενα php αρχειο το οποιο οταν τρεχει μεσω crontab θα παραγει το XML για το skroutz feed. Το προβλημα ειναι οτι μου εμφανιζει την περιγραφη προιοντων οπως παρακατω:
Κωδικας PHP

Code: Select all

<?php

//Create a connection to MySQL and select "my_db" database
$con = mysql_connect('dbserver.gr','opencart','') 
         or die( 'Could not connect to DB: ' . mysql_error() );
mysql_select_db(opencart, $con) or die( mysql_error() );
mysql_query("SET NAMES 'utf8'", $con);


$sql = "SELECT product.product_id, product.price, product.model, product.sku, product.image, product.weight, product.stock_status_id, product.quantity , product_description.description FROM product, product_description WHERE (product.product_id = product_description.product_id AND language_id=2)";

$q = mysql_query($sql)or die(mysql_error()); 
$xml .= "<?xml version=\"1.0\" encoding=\"utf-8\"?>"; 
$xml .= "<myeshop>";
 $testSqlDateStamp = "1125442013";
echo "<BR>DateTest=".date('Y-m-d G:i:s',strtotime);
$xml .= "<products>";

while($r = mysql_fetch_array($q)){

 $xml .= "<product>";
 $xml .= "<id><![CDATA[" . $r["product_id"] . "]]></id>";
 $xml .= "<name><![CDATA[" . $r["model"] . "]]></name>";
 $xml .= "<link><![CDATA[" . $r["sku"] . "]]></link>";
 $xml .= "<image><![CDATA[http://webgateserver.gr/eshop/image/" . $r["image"] . "]]></image>"; 
 $xml .= "<category><![CDATA[" . $r["name"] . "]]></category>";
 $xml .= "<price_with_vat><![CDATA[" . $r["price"] . "]]></price_with_vat>";
/*  $xml .= "<manufacturer><![CDATA[" . $r["name"] . "]]></manufacturer>"; */
 $xml .= "<description><![CDATA[" . $r["description"] . "]]></description>"; 
 $xml .= "<weight><![CDATA[" . $r["weight"] . "]]></weight>";
 $xml .= "<mpn><![CDATA[" . $r["sku"] . "]]></mpn>";
 $xml .= "<InStock><![CDATA[" . $r["stock_status_id"] . "]]></InStock>";
 $xml .= "<Availability><![CDATA[" . $r["quantity"] . "]]></Availability>";
 $xml .= "</product>";
 }
$xml .= "</products>";
$xml .= "</myeshop>";

$sxe = new SimpleXMLElement($xml);
$sxe->asXML("test.xml");

?>
O οποιος παραγει το ακολουθο XML.

Code: Select all

Αυτό το αρχείο XML δεν φαίνεται να έχει συσχετισμένες πληροφορίες μορφοποίησης. Το δένδρο εγγράφου φαίνεται παρακάτω.

      <myeshop><products><product><id>30</id><name>75234343</name><link>75234343</link><image>http://webgateserver.gr/eshop/image/data/PRODUCTS/shoes/WOMEN/Boots/32129F128015_3_2.jpg</image><category></category><price_with_vat>130.0000</price_with_vat><description><p><span id="result_box" lang="el"><span class="hps">Ankle</span><span class="atn">-</span><span>&upsilon;&psi;&eta;&lambda;ή</span> <span class="hps">&tau;&rho;&alpha;&chi;&upsilon;&mu;έ&nu;&omicron;&upsilon;</span> <span class="hps">&delta;&epsilon;&rho;&mu;ά&tau;&iota;&nu;&epsilon;&sigmaf; &mu;&pi;ό&tau;&epsilon;&sigmaf;</span> <span class="hps">&sigma;&epsilon;</span> <span class="hps">&mu;&alpha;ύ&rho;&omicron; &mu;&alpha;&tau;</span><span>.</span> <span class="hps">Almond</span> <span class="hps">toe</span><span>.</span> <span class="hps">&Phi;&epsilon;&rho;&mu;&omicron;&upsilon;ά&rho;</span> <span class="hps">&sigma;&tau;&eta;&nu;</span> <span class="hps">&epsilon;&sigma;&omega;&tau;&epsilon;&rho;&iota;&kappa;ή &epsilon;&pi;&iota;&phi;ά&nu;&epsilon;&iota;&alpha;</span> <span class="hps">&mu;&epsilon;</span> <span class="hps">&mu;&alpha;&kappa;&rho;ύ &delta;&epsilon;&rho;&mu;ά&tau;&iota;&nu;&omicron;</span> <span class="hps">&phi;&epsilon;&rho;&mu;&omicron;&upsilon;ά&rho; &tau;&rho;&alpha;&beta;ή&xi;&tau;&epsilon;</span><span>.</span> <span class="hps">&Tau;&rho;&alpha;&beta;ή&xi;&tau;&epsilon; &tau;&omicron;</span> <span class="hps">&beta;&rho;ό&chi;&omicron;</span> <span class="hps">&sigma;&tau;&omicron; &gamma;&iota;&alpha;&kappa;ά</span> <span class="hps">&phi;&tau;έ&rho;&nu;&alpha;</span><span>.</span> <span class="hps">&Tau;&omicron;&nu;&iota;&kappa;ή</span> <span class="hps">&rho;&alpha;&phi;ή</span> <span class="hps">&kappa;&alpha;&iota; &gamma;&lambda;ώ&sigma;&sigma;&alpha;&sigmaf;</span><span>.</span> <span class="hps">&Pi;&epsilon;&rho;ί&pi;&omicron;&upsilon;</span><span>.</span> <span class="hps">2.5</span> <span class="hps atn">"</span><span>&kappa;&omicron;&upsilon;&beta;&alpha;&nu;έ&zeta;&iota;&kappa;&omicron;</span> <span class="hps">&tau;&alpha;&kappa;&omicron;ύ&nu;&iota;</span> <span class="hps">Ά&nu;&omega; &kappa;&alpha;&iota;</span> <span class="hps">&phi;ό&delta;&rho;&alpha;:</span><span>.</span> <span class="hps">&Delta;έ&rho;&mu;&alpha; &Sigma;ό&lambda;&alpha;</span><span>:</span><span>.</span><span>.</span> <span class="hps">&Delta;έ&rho;&mu;&alpha; &kappa;&alpha;&iota;</span> <span class="hps">&kappa;&alpha;&omicron;&upsilon;&tau;&sigma;&omicron;ύ&kappa;</span> <span class="hps">Made in</span> <span class="hps">Italy</span><span>.</span></span></p>
</description><weight>0.00000000</weight><mpn>75234343</mpn><InStock>6</InStock><Availability>6</Availability></product>

Re: XML εσφαλμένη εμφάνιση χαρακτηρων.

Posted: Sat Feb 22, 2014 10:10 pm
by People's Code
Καλησπέρα
Αν και ο κώδικας σου έχει κάποια λαθάκια, το πρόβλημα με τα html entities στην περιγραφή του xml πρέπει να οφείλεται στο ότι η περιγραφή είναι ήδη καταχωρημένη με entities στη βάση (πιθανότατα από custom text editor ή από κάποιο εργαλείο import/export). Έλεγξε την περιγραφή του προϊόντος με id 30 από το phpmyadmin για να το επιβεβαιώσεις.

Re: XML εσφαλμένη εμφάνιση χαρακτηρων.

Posted: Sun Feb 23, 2014 3:04 am
by drest341
Πιθανοτατα αυτο ειναι σωστό. Εξήγαγα το XML σε άλλη βάση με αποτέλεσμα να επιστρεφει σωστους χαρακτηρες στην περιγραφή των πεδίων. Το μονο θεμα ομως που ενεσκυψε ειναι οτι παρουσιάζει τα δεδομενα οχι σε tags " <> " αλλά στην μορφή "<description><![CDATA[<p> HTC Touch - in High Definition. ..... "</description> . Και αυτο μονο στα κειμενα οχι στα Νουμερα.

Re: XML εσφαλμένη εμφάνιση χαρακτηρων.

Posted: Sun Feb 23, 2014 8:31 am
by People's Code
Το ίδιο ισχύει και σε αυτήν την περίπτωση, τα entities είναι περασμένα έτσι στη βάση και εσύ απλά τα καλείς όπως είναι, όμως αυτό το αποτέλεσμα είναι φυσιολογικό.

Ποια η διαφορά μεταξύ του πρώτου post και του δεύτερου:
- Στο πρώτο post κάτι προξένησε την μετατροπή όλων των χαρακτήρων της περιγραφής σε html entities (editor / import - export tool κλπ) και όταν καταχωρήθηκε η περιγραφή πέρασε από το function htmlentities().
- Στη δεύτερη περίπτωση το αποτέλεσμα είναι φυσιολογικό γιατί έχει χρησιμοποιηθεί σωστά το function htmlspecialchars() που μετατρέπει σε entities μόνο τα ακόλουθα: & " ' < >

Re: XML εσφαλμένη εμφάνιση χαρακτηρων.

Posted: Sat Mar 01, 2014 4:24 am
by drest341
Δυστυχως το προβλημα παραμενει επειτα και απο clean install OC 1.5.6. σε νεα Β.Δ.
Τα html entities παρουσιάζονται εσφαλμένα οπως βλεπω και μεσα απο το PHPmyAdmin. Σε manual διορθωση των δεν εξαφανισε το προβλημα. Κατι ισως με κωδικοποιηση της Βασης??

Re: XML εσφαλμένη εμφάνιση χαρακτηρων.

Posted: Sat Mar 01, 2014 5:18 pm
by People's Code
Όταν είσαι στο Opencart ή στο PHPmyadmin, έλεγξε το character encoding του browser σου τι έχει δηλωμένο.

Re: XML εσφαλμένη εμφάνιση χαρακτηρων.

Posted: Fri Mar 07, 2014 9:12 pm
by drest341
Πολυ σωστη η απαντηση σου. Εκανα εξαγωγη σε αρχειο τυπου .csv και μετα επεξεργαστηκα το ιδιο αρχειο με notepadd++ για μετατροπη του με κωδικοποιηση utf8 without BOM. Με την εισαγωγή του στον αντιστοιχο πινακα τα δεδομενα εμφανιστηκαν χωρις entities και το XML αρχειο που παραγεται ειναι ΟΚ. ;)

Re: XML εσφαλμένη εμφάνιση χαρακτηρων. [SOLVED]

Posted: Tue Jun 17, 2014 6:54 pm
by antstyl
Καλησπέρα έχω το ίδιο πρόβλημα και εγώ αλλά δυστυχώς δεν μπόρεσα να βρώ λύση!

Από ότι βλέπω και στην βάση δεδομένων είναι περασμένα έτσι:

<p>CCID1410-AB &Pi;&rho;&omicron;&sigma;&alpha;&gamma;&omega;&gamma;έ&alpha;&sigmaf; &sigma;&tau;&eta;&nu; CCID1410-ST &gamma;&iota;&alpha; &pi;&epsilon;&rho;&iota;&phi;&epsilon;&rho;&epsilon;&iota;&alpha;&kappa;ά &upsilon;&lambda;&iota;&kappa;ά<br />
&tau;ύ&pi;&omicron;&upsilon; CCDA1425</p>

Μπορεί να γίνει κάτι για να διορθωθεί??

Re: XML εσφαλμένη εμφάνιση χαρακτηρων. [SOLVED]

Posted: Tue Jun 17, 2014 7:14 pm
by antstyl
Με επαναφορά του text-editor στον κανονικό της 1.5.6.1 και αποθήκευση κάθε προϊόντος διορθώθηκαν και στην βάση!