Newsgroup: it.comp.lang.perl
Titolo: è diventa Š ?????

ciao a tutti,
sto trafficando con perl e un database (modifiche, cancellazione
record,ecc.) su web.
Mi e' capitato per la prima volta questo problema:
se in un campo del record ho il mio bel testo e nel testo c'e' una e
accentata (è), questa passata via GET allo script diventa una schifezza
di s maiuscola (Š)............
Qualcuno puo' dirmi cosa succede ??
Uso NT(purtroppo) con Xitami.
Grazie
Mattia

 Qualcuno puo' dirmi cosa succede ??
Evita l'uso di caratteri al di fuori del set ASCII base (7-bit), perche' la
loro rappresentazione dipende dal terminale.
Maurizio
-- 
Maurizio M. Munafo' / 
mmmu...@netscape.net
"Consider Phlebas, who was once handsome and tall as you" (T.S.Eliot)

il problema e' che questo database verra' aggiornato da diversi utenti per i
quali non usare alcuni caratteri e' chiedere troppo ....... (leggi dipendenti
comunali)....
L'unica cosa e' cercare di eliminare tutte le parole fuori del set ASCII base
al momento dell'inserimento dei dati ??????
Qualcuno ha per caso uno script che gia' lo faccia ?
Rigrazie,
Mattia


 Mattia
-- 
ASTAT - Istituto provinciale di statistica
viale Duca D'Aosta, 59
I - 39100 Bolzano
tel: 0471/994045  fax: 0471/994008
http://www.provinz.bz.it/astat

 Xitami? grazie
Ma certo !
ciao.

 oppure(se gli indichi la variabile) il contenuto della variabile
Non mi sembra sia lo stesso problema.


 Qualcuno ha per caso uno script che gia' lo faccia ?
Io no. Ma si tratterebbe di una serie di s/xxx/yyy/g abbastanza banale.
Il tutto sta nel sapere esattamente quali sono i caratteri xxx e a cosa
corrispondono.


 esiste una regexp che faccia anche il contrario ?
in che senso? che se ha caratteri giusti se ne inventa di sbagliati?
scherzo. Intendevi probabilmente che se conosci i caratteri "latini" te
li trasforma in esadecimali?
in questo caso (tratto dal cookbook):
$num = ord($char);
l'altro era
$char = chr($num);
ma (credo) ord() non ti da il riusltato in esadecimale ma in numero
intero.
esiste (come avrai visto) la funzione hex che trasforma esadecimali in
numeri
molto di più non so.
ciao, antonio

il problema si fa complicato !!!
è é à ù ì
diventa
Š ‚ … — ?
e ora ???? con che coraggio sostituisco i punti di domanda con delle i accentate e
le virgole con delle e accentate ?????????
Per quanto potenti e utili siano le regexp non credo che possano risolvere il mio
problema se non a monte....
Dovrei sostituire al momento dell'inserimento tutti i caratteri accentati con la
rispettiva lettera apostrofata.
Provvedero'...
ciao
Mattia


ho appena testato il seguente script
con WinNT, Activestate, Xitami
e il risultato è "bellissimo"
credo che usando la biblioteca CGI riesci a scansare tanti problemi.
A meno che... tu non stia passando qualcosa direttamente nella "riga di
comando" (ma anche in questo caso da me funziona senza problemi)
come funziona "param" del modulo "CGI"
@ElencoVariabiliDelForm=param;
@ElencoValoriDellaVariabileDelForm=param($VariabileDelForm);
ecco il mio script
#! perl.exe
use CGI qw(:standard escapeHTML);
&test;
sub test {
    my $p;
    print header(), start_html('bellissimo !');
    foreach $p (param) {
        foreach $v ( param($p) ) {
            print p("$p =", b(escapeHTML($v)) );
            };
        };
print     end_html();
};
