- Home
- Categorie
- Coding e Sistemistica
- PHP
- problema vocali accentate
-
problema vocali accentate
Ciao a Tutti!:)
ho un problemino, non essendo un esperto..ho creato un piccolo form php/mysql
per inserire i dati (ricevuti come variabili $_POST) faccio in questo modo:$description = mysql_real_escape_string($_POST['description]);
$product = mysql_real_escape_string($_POST['product']);
$query = "insert into table" . "(description, product)" . "VALUES('" . $description . "','" . $product . "')";e i record inseriti sono ok.. anche le vocali accentate sembrano essere inserite senza problemi.
il problema è quando vado a recuperare i dati inseriti.. (lo faccio con un file php [mysql_fetch_array] che restituisce un file xml) .. mi restituisce tutti i caratteri senza problemi tranne che per le vocali accentate, mi vengono restituite come punto interrogativo sul file xmlesempio:
<?xml version="1.0" encoding="UTF-8"?>
<mainnode>
<child name = "mioChild">
<row id = "1" description="��''"���" product="wert9w0e�w"></row>
</child>
</mainnode>C'è qualcuno che può aiutarmi a capire? gliene sarei enormemente grato.
-
devi usare le entità html usa htmlentities() per convertirle prima di inserirle nel database (http://it.php.net/manual/it/function.htmlentities.php)
-
Grazie loHacker! ora provo e faccio sapere.
-
ok, funzia.. ma devo anche poi riconvertire i valori per poterli visualizzare sul XML. ho letto che c'è anche la funzione inversa: html_entity_decode() e l'ho usata nel seguente modo:
$results = mysql_query("select id, product, description, cost from mytable ORDER By id DESC");
while($row=mysql_fetch_array($result)){
$line = "\t\t".'<row id = "'.$row[id].'" product="'.$row[product].'" description="'.$row[description].'" cost="'.$row[cost].'"></row>'. "\n";
$line = html_entity_decode($line);
echo $line;
}ma mi restituisce sempre i punti di domanda sulle vocali accentate!:x
dove sbaglio?
-
ma cosa usi per convertirli in xml?
-
Ciao, scusa il ritardo..
uso una serie di echo che restituiscono codice xml
come:echo ('<?xml version="1.0" encoding="UTF-8"?>'."\n");
echo ("<mainnode>\n");
echo ("\t<node name = "Node">\n");
while($row=mysql_fetch_array($resultwhisky)){
$line = "\t\t".'<row id = "'.$row[id].'" product="'.$row[product].'" description="'.$row[description].'" cost="'.$row[cost].'"></row>'. "\n";
$line = html_entity_decode($line);
echo $line;
}
echo ("\t</node>\n");
echo ("</mainnode>");
-
non c'è proprio nessuno che sia in grado di aiutarmi?
Mi basta anche un piccolo aiutino, poi mi arrangio. vorrei solo riuscire a capire con sicurezza che cosa sbaglio..
-
Non vedo nulla di sbagliato, non puoi tenere i caratteri speciali in entità html?
-
Ciao, no perchè mi serve che il contenuto del file xml non presenti nessun tipo di codice.. mi serve proprio 'recuperarlo' con i caratteri 'giusti' per poi recuperarli in flash.
Ho risolto proprio ora con questa funzione http://it.php.net/utf8_encode
es:
$description = utf8_encode($_POST['description']);spero vada bene così.. hai qualche consiglio in proposito?
Grazie per la tua disponibiltà e pazienza
Mirco
-
Di nulla
Io non ho altre idee anche perchè non mi è mai capitato di trovarmi i ? al posto dei caratteri perchè anche provando in locale mi è sempre funzionato.
Mah misteri del php...:?