Newsgroup: it.comp.www.php
Titolo: XML inviato su IE tramite header non accetta caratteri accentati

Buonasera a tutti,
il mio problema è praticamente spiegato nell'oggetto.
Creo un xml e lo invio al browser tramite header del php: se il
browser è firefox tutto funziona bene, ma se è Internet Explorer non
funziona. In quanto non accetta i caratteri accentati.
-------------------------------------------------------------------------------------------------------
header("Content-type: application/xml; charset=iso-8859-1");
header("Cache-control: no-cache, must-revalidate");
echo "<?xml version='1.0'?>\n";
echo "<categorie>\n";
ecc....
-------------------------------------------------------------------------------------------------------
Quale charset dovrei utilizzare?
grazie anticipatamente per le vostre risposte

 Quale charset dovrei utilizzare?
Usa UTF-8 e converti i caratteri accentati in entità.
Ciao,
    Fabrizio

> Usa UTF-8 e converti i caratteri accentati in entità.
grazie per la risposta, ma ahimè non ho risolto nulla: solito
problema.  Ecco cosa ho fatto:
---------------------------------------------------------------------------------------
header("Content-type: application/xml; charset=UTF-8");
header("Cache-control: no-cache, must-revalidate");
echo "<?xml version='1.0'?>\n";
echo "<categorie>\n";
....
echo "\t<categoria value='".$r[$id]."'>".htmlentities($r["comune"])."</
categoria>\n";
.....
---------------------------------------------------------------------------------------

 categoria>\n";
Ma $r['comune'] contiene dei caratteri accentati?


si, ad esempio Nardò (lecce) e ce ne sono ancora tanti altri :(


Hai fatto la conversione, esempio, Nardò a Nardograve;

> Hai fatto la conversione, esempio, Nardò a Nardograve;
si l'ho fatta con htmlentities e mi converte Nardò in Nard&ograve, ma
mi da lo stesso errore in quanto questa volta ad non essere accettata
è "&".
Ho provato ad utilizzare urlencode, ma converte ad esempio lo spazio
con il +, ecc..

 con il +, ecc..
Posta un pò di codice.

> Posta un pò di codice.
beh il codice è praticamente quello che ho inserito nel primo post.
Comunque ora lo metto tutto:
--------------------------------------------------------------------------------------------------
//Id della Regione/Provincia/ Comune scelto dall'utente
$scelta = (string) @$_POST['scelta'];
// Dove fare la ricerca(regione, provincia, citta)
$tipoLoc = (string) @$_POST['tipoLoc'];
header("Content-type: application/xml; charset=UTF-8");
header("Cache-control: no-cache, must-revalidate");
echo "<?xml version='1.0'?>\n";
echo "<categorie>\n";
switch($tipoLoc){
	case 'regione':
		caricaLocalita("SELECT idProvincia, provincia FROM provincia WHERE
codRegione = '$scelta'", "Nessuna Provincia inserita",
		"idProvincia", "provincia", $scelta);
	break;
	case 'provincia':
		caricaLocalita("SELECT idComune, comune FROM comune WHERE
codProvincia = '$scelta'", "Nessuna citta inserita",
		"idComune", "comune", $scelta);
	break;
	default:
		echo "\t<categoria value='00'>- - - - -</categoria>\n";
	break;
}
echo "</categorie>\n";
function caricaLocalita($query, $noLoc, $id, $prcm, $scelta){
	require_once('config.php');
	require_once('classi/class.LogFile.php');
	require_once('classi/class.Mysql.php');
	$mysql = new Mysql(DB_HOST, DB_USER, DB_PASS, DB_NAME);
	$mysql->openConnection();
	$row= $mysql->select($query, "ASSOC");
	$mysql->closeConnection();
	if($scelta == '00'){
		echo "\t<categoria value='00'>- - - - -</categoria>\n";
		return;
	}
	if ($scelta != 0 && count($row) == 0){
		echo "\t<categoria value='00'>".$noLoc."</categoria>\n";
	} else {
		foreach ($row as $r) {
			echo "\t<categoria value='".$r[$id]."'>".htmlentities($r[$prcm])."</
categoria>\n";
		}
	}
}
--------------------------------------------------------------------------------------------------

risolto bastava semplicemente utilizzare utf8_encode();

[ Predator ] wrote:

<![CDATA[nardò]]> così dovrebbe prenderlo
-- 
777 fanno 21, arriva la volante e non c'è nessuno