Προς το περιεχόμενο

Προτεινόμενες αναρτήσεις

Δημοσ. (επεξεργασμένο)

Καλησπέρα,

 

Φτιάχνω μια εφαρμογή που στηρίζεται στη χρήση google maps και στην εμφάνιση dynamic map markers από αποθηκευμένες τοποθεσίες στη βάση δεδομένων. Χρησιμοποιώ XML για να "μεταφέρω" δεδομένα από PHP σε JAVASCRIPT.

Το πρόβλημα που αντιμετωπίζω είναι το παρακάτω: Ενώ όλοι οι πίνακες της βάσης μου καθώς και τα αρχεία του project έχουν utf8 encoding, δεν εμφανίζονται σωστά οι ελληνικοί χαρακτήρες, μόνο αγγλικά ερωτηματικά. Αυτό το έχω παρατηρήσει μόνο στο αρχείο xml (τα αρχεία php/html εμφανίζουν κανονικά τους ελληνικούς χαρακτήρες). Έχω ψάξει πάρα πολύ και δεν βρίσκω άκρη (από χθες το μεσημέρι προσπαθώ να βρω λύση κι έχω χαραμίσει πάνω από 10 ώρες σε αυτό μόνο, γενικά μου έχουν σπάσει τα νεύρα :mad:) και δεν θα έκανα post αν δεν είχα εξαντλήσει το θέμα. Ο κώδικας xml είναι μια παραλλαγή αυτού εδώ https://developers.google.com/maps/articles/phpsqlajax_v3#echoxml . Το μόνο που έχω αλλάξει είναι τα ονόματα για να αντιστοιχούν στην δική μου βάση. Ο κώδικάς μου είναι ο εξής 

<html><head><meta http-equiv="Content-Type" content="text/xml; charset=utf-8"/> </head>
<?php
require("phpsqlajax_dbinfo.php");

function parseToXML($htmlStr)
{
$xmlStr=str_replace('<','<',$htmlStr);
$xmlStr=str_replace('>','>',$xmlStr);
$xmlStr=str_replace('"','"',$xmlStr);
$xmlStr=str_replace("'",''',$xmlStr);
$xmlStr=str_replace("&",'&',$xmlStr);

return $xmlStr;
}

// Opens a connection to a MySQL server
$connection=mysql_connect ('localhost', $username, $password);
if (!$connection) {
  die('Not connected : ' . mysql_error());
}

// Set the active MySQL database
$db_selected = mysql_select_db($database, $connection);
if (!$db_selected) {
  die ('Can\'t use db : ' . mysql_error());
}

// Select all the rows in the markers table
$query = "SELECT * FROM array1 WHERE 1";
$result = mysql_query($query);
if (!$result) {
  die('Invalid query: ' . mysql_error());
}

header("Content-type: text/xml");

// Start XML file, echo parent node
echo '<markers>';

// Iterate through the rows, printing XML nodes for each
while ($row = @mysql_fetch_assoc($result)){
  // ADD TO XML DOCUMENT NODE
echo '<marker ';
  echo 'name="' . parseToXML($row['name']) . '" ';
  echo 'content ="' . parseToXML($row['content']) . '" ';
  echo 'type="' . $row['type'] . '" ';
  echo 'longitude="' . $row['longitude'] . '" ';
  echo 'latitude="' . $row['latitude'] . '" ';
  echo '/>';
}

// End XML file
echo '</markers>';
?>
</html>
Επεξ/σία από stavrosgreenday
Δημοσ.

Χαχα utf-8 ήθελα να γράψω. Το έχω δοκιμάσει σωστά με utf-8 προφανώς και δεν δουλεύει   :P

Πάντως το link που δίνεις σου λέει σε άπειρα σημεία ότι αν θέλεις UTF-8 θα πρέπει να χρησιμοποιήσεις to utf8_encode function.

Δημοσ.

Πάντως το link που δίνεις σου λέει σε άπειρα σημεία ότι αν θέλεις UTF-8 θα πρέπει να χρησιμοποιήσεις to utf8_encode function.

Το διόρθωσα. Ευχαριστώ πολύ φίλε. Η αλήθεια είναι ότι αφού έβαζα παντού να έχει κωδικοποίηση utf8 δεν το θεώρησα απαραίτητο. 

Έπρεπε να βάλω mysql_set_charset('utf8'); μετά το query.

Και πάλι ευχαριστώ!!

  • Like 1
Δημοσ.

Παρόλα αυτά, δεν έχω καταλάβει αυτό που βάζεις το XML μέσα στο HTML. Το έκανες για να το τεστάρεις? Γιατί αλλιώς αν δεν απατώμαι θα στείλει ώς XML όλο το content, μαζί με το <html> head ktlp.

Δημοσ.

Παρόλα αυτά, δεν έχω καταλάβει αυτό που βάζεις το XML μέσα στο HTML. Το έκανες για να το τεστάρεις? Γιατί αλλιώς αν δεν απατώμαι θα στείλει ώς XML όλο το content, μαζί με το <html> head ktlp.

Το είχα κάνει γιατί προσπαθούσα να αλλάξω τη κωδικοποίηση σε utf8. Δεν είμαι σίγουρος αν θα γίνει αυτό που λες. Θα στείλω τα δεδομένα του xml στη javascript και θα το τεστάρω τότε συνολικά.

  • Like 1
Δημοσ.

Για την ιστορία πάντως ο κώδικας έχει διάφορα θέματα, με πιο εξώφθαλμα ότι

  • χρησιμοποιεί mysql extension η οποία πλέον επιτέλους έχει αφαιρεθεί τελείως από τις τελευταίες εκδόσεις της PHP
  • η function parseToXML είναι τελείως λάθος (κακό όνομα, bug στην υλοποίηση, και κακή ιδέα να πας να ξανακάνεις κάτι που γίνεται ήδη με τη htmlspecialchars

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα
  • Δημιουργία νέου...