Newsgroup: it.comp.www.php
Titolo: problemi di charset con php e xml

ciao,
non riesco a far visualizzare correttamente il testo contenuto in un 
file xml.
Il file xml inizia con la riga:
<?xml version="1.0" encoding="UTF-8"?>
ed è richiamato da un file php con simplexml:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
http://www.w3.org/TR/html4/strict.dtd
">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<?php
   $xml = simplexml_load_file('file.xml');
    ... eccetera ...
?>
Il browser (ho provato con Opera e Firefox) riconosce il documento come 
iso-8859-1, quindi visualizza male le lettere accentate. Se imposto la 
codifica manualmente come UTF-8 le lettere accentate vengono 
visualizzate correttamente. Solitamente il riconoscimento automatico 
funziona.
Con php4 questo non mi succedeva, con lo stesso xml e la dtessa 
intestazione del file php (il codice ovviamente cambiava perché php4 non 
ha simplexml).
Dove sbaglio?
grazie e ciao
-- 
GN/\PPA
"E' meglio accendere una candela che maledire l'oscurità"
http://amnestypiacenza.altervista.org
Errori nei test di ammissione alla SSIS
http://gnappa.netsons.org/quesitissis/index.php

 grazie e ciao
citando da 
w3schools.com
 ..
The conclusion is that the encoding attribute has to specify the encoding
used when the document was saved. My best advice to avoid errors is:
    * Use an editor that supports encoding
    * Make sure you know what encoding it uses
    * Use the same encoding attribute in your XML documents
-- 
www.iuz-lab.info
 - 
www.php-faq.org

 
grazie, però io ho creato un documento in utf-8 (con pspad), infatti se 
imposto la codifica manualmente nel browser gli accenti sono corretti. 
La cosa strana è che il browser imposta automaticamente la codifica 
sbagliata, e con php4 questo non succedeva.


 
hai controllato quali header vengono inviati? presta attenzione al
content-type.. magari viene dichiarato il charset sbagliato..
-- 
www.iuz-lab.info
 - 
www.php-faq.org

 
Il content-type lo definisco come ho scritto nel primo post.
C'è proprio qualcosa che non va, più prove faccio e meno capisco.
Creo un file php con codifica utf-8 con questo contenuto:
-----
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
"
http://www.w3.org/TR/html4/strict.dtd
">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<?php
echo "<p>bla blà</p> <p>però perù</p>";
?>
-----
Mi aspetto che il browser imposti la codifica a utf-8 e legga 
correttamente le lettere accentate...invece setta la codifica 
automaticamente a iso-8859-1 e vede le lettere accentate bene, se 
imposto manualmente utf-8 le vade male...questo con firefox, opera e ie, 
tutti configurati per il riconoscimento automatico.
Se nello stesso file aggiungo le righe per leggere e visualizzare il 
contenuto di un file xml creato in utf-8 e che inizia con:
<?xml version="1.0" encoding="UTF-8"?>
succede quello che dicevo, cioè il browser si setta su iso-8859-1 e 
visualizza male, e impostando manualmente utf-8 visualizza bene.
Io più che definire il charset nell'intestazione e creare file con la 
stessa codifica non so cosa fare :-(
grazie e ciao


 tutti configurati per il riconoscimento automatico.
Usa firebug su firefox, e analizza cosa arriva al browser, header compresi.
Bye.

 
ce l'avevo firebug ma non avevo pensato a guardarci perché non mi 
segnalava errori :-)
in effetti mi dice:
Date	Mon, 20 Aug 2007 10:31:59 GMT
Server	Apache/2.0.50 (Win32) PHP/5.2.3
X-Powered-By	PHP/5.2.3
Content-Length	168
Keep-Alive	timeout=15, max=99
Connection	Keep-Alive
Content-Type	text/html; charset=ISO-8859-1
Aggiungendo invece
header('Content-Type: text/html; charset=utf-8');
la pagina viene visualizzata correttamente. Grazie 1000!
Ma indicare il charset nell'html a cosa serve allora, se il browser non 
usa quella informazione?


 usa quella informazione?
Questa e` un'ottima domanda senza risposta. :)
Probabilmente alcuni browser la considerano, mentre altri danno priorita` 
all'header http.
Io, nel dubbio, li specifico sempre entrambi.
Bye.