Newsgroup: it.comp.lang.perl
Titolo: caratteri accentati

Con uno script  in perl stò prendendo il contenuto della pagina e la
salvo dentro un db. quando però c'è un testò con i caratteri à è
ì ù ò mi salva ad esempio Ã per à. come posso evitare tutto ciò?

ì ù ò mi salva ad esempio Ã per à. come posso evitare tutto ciò?
Non credo che c'entri Perl, anche se bisognerebbe conoscere in dettaglio
come prelevi il contenuto. Probabilmente la "pagina" (qualsiasi cosa essa
sia) usa la codifica utf8 (Ã è appunto la prima parte della codifica utf8
di à: C3A0), o il testo viene ricodificato nel passaggio al db (anche qui,
bisognerebbe sapere come avviene).
La soluzione è un'eventuale ricodifica del testo, in qualche punto del
processo. Impossibile essere più precisi senza conoscere i dettagli.
Ciao.

Ciao,
allora la "pagina" è una pagina web casuale che prendo così:
my $response = $browser->get($url, @ns_headers);
my $html = $response->content;
mentre il db è mysql.
Cosa potrei fare per fare in modo che lui salvi à così come lui la
trova sulla pagina html?

trova sulla pagina html?
Il problema è: come la trova? intanto bisognerebbe stabilire la codifica
della pagina, quindi la codifica del database, e poi ci si può mettere un
Encode che trasformi una nell'altra (se possibile).
Ciao.

 
su 
http://pod2it.sourceforge.net/pods/perluniintro.html
 avevo trovato 
queste due reg exp che convertono i caratteri.
ne avevo bisogno quando parsavo un file xml e i dati dovevano essere 
inseriti un db.
ti potrebbero essere utili.
     # da ISO 8859-1 a UTF-8
     s/([\x80-\xFF])/chr(0xC0|ord($1)>>6).chr(0x80|ord($1)&0x3F)/eg;
     # da UTF-8 a ISO 8859-1
     s/([\xC2\xC3])([\x80-\xBF])/chr(ord($1)<<6&0xC0|ord($2)&0x3F)/eg;

queste due reg exp che convertono i caratteri.
Vabbe', c'è anche il modulo Encode per questo. Il problema principale mi
sembra che sia piuttosto capire bene che cosa succede, se e quale
conversione è necessaria, e dove.
Ciao.



Prova a verificare i character sets ed i collations impostati nelle tue
tabelle.
http://dev.mysql.com/doc/refman/4.1/en/charset-we-sets.html
'bye

Ho fatto una prova ho fatto una pagina dove ho messo i caratteri àòè
e lui me li printa correttamente, quindi il problema è la codifica che
usa mysql. come vedo quale è la codifica?

Ho scoperto una cosa stranissima. Se provo a prendere il testo di una
pagina web su un server mi prende correttamente le è ì ù ò mentre
su un altro server se metto la stessa pagina html non mi riconosce i
caratteri accentati.

 caratteri accentati.
Ovviamente dipende dalla configurazione del server.
La questione delle codifiche dei caratteri č sempre molto problematica.

 La questione delle codifiche dei caratteri è sempre molto problematica.
Escludi pure il db. La codifica dei caratteri serve per la loro
"interpretazione" ma rileggi cmq quello che hai scritto.
Probabilmente il charset del server da cui leggi è diverso da quello su
cui pubblichi la pagina... devi uniformarli.
Verifica gli header HTTP quando scarichi la pagina (Content-type:) e fai
le dovute conversioni. Se non vuoi fare conversioni genera la pagina con
lo stesso charset avendo l'attenzione di inviare anche l'header
content-type con il charset uguale all'originale.
HTH,
Fabio.

 
Apposta un buon webmaster dovrebbe usare &agrave; al posto della a 
accentata, perche' in questo modo si evitano tutti i problemi di 
decodifica sia lato server che lato client.


Scusate. Inavvertitamente ho ordinato per data decrescente invece che 
crescente e ho preso questo thread per nuovo, e sono intervenuto.
E invece e' un thread che ha piu' di un anno di eta'.