Newsgroup: it.comp.lang.javascript
Titolo: Conversione da carattere ASCII

Salve a tutti,
ho un problema nel convertire alcuni caratteri ASCII.
Ho una stringa in un database Firebird che contiene degli "a capo".
Quando, tramite javscript, passo la stringa a una variabile locale e poi
tento di stampare a video il risultato ottengo un "Costante String senza
terminazione".
Mi č venuto in mente di sostituire i caratteri ASCII 012 (Line feed) con
un \n e lo 015 (Carriage return) con un \r ma il risultato non cambia.
Se sostituisco invece i due caratteri ad es. con degli spazi ecco che
riesco a stampare la stringa senza problemi (ovviamente tutta in una riga
sola).
Avete qualche idea?
Grazie in anticipo...
Lupin
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 terminazione".
stampare dove esattamente?
tuastringa.replace(/\n|\r/g," "); per alert o con <br/> per metterlo a
video (in generale, poi dipende esattamente a cosa serve, se devi farlo
server-side occorre conoscere il linguaggio usato server-side etc)
-- 
"e mai che mi sia venuto in mente
 di essere più ubriaco di voi
 di essere molto più ubriaco di voi"
									  F.D.A.

 server-side occorre conoscere il linguaggio usato server-side etc)
In realtą devo passarlo a una textarea (che ha id "testo"):
document.getElementById('testo').value = ' stringa con gli a capo ';


 un \n e lo 015 (Carriage return) con un \r ma il risultato non cambia.
Prova ad escapare (lato server) i backslash: \n -> \\n, r -> \\r
-- 
mailto: y = i
----------------------------------------
Vivo nel terrore di non essere frainteso 
(Oscar Wilde)

 Prova ad escapare (lato server) i backslash: n -> \n, r -> \r
Facendo cosě il js non mi da errore, ma nel textarea invece di apparire la
stringa su piů righe (con gli a capo) mi appare su un'unica riga e gli a
capo me li ha sostituiti con i caratteri "r" e "n"....
Per completezza di informazione le pagine sono jsf.


 Prova ad escapare (lato server) i backslash: n -> \n, r -> \r
Forse il problema č che nel file .java io cerco di buttare in un ogggetto
String un campo di un record che contiene degli a capo.. infatti se
sostituisco \n e \r con dei caratteri casuali (ad es. delle lettere)
funziona. C'č una soluzione?
Grazie


 C'č una soluzione?
La soluzione devi trovarla sul server; io perň java non lo conosco e non
posso esserti d'aiuto. L'unica cosa che posso dirti č che l'output (bada
bene, sto parlando di _output_) deve risultare cosě:
'stringa con gli\r\na capo\r\na capo';
Ecco che nella textarea vedrai scritto:
stringa con gli
a capo
a capo


 a capo
Ho controllato ma di apici che si chiudono prima non ce ne sono... ti
posso dare l'output della stringa che stampo nel file .java §(è un
template):
document.getElementById('testo').value = '<table width="504" border="0"
cellspacing="0" cellpadding="0">
              <tr>
                <td height="20"></td>
              </tr>                  
            </table>'; 
come vedi sembra tutto a posto... 


 come vedi sembra tutto a posto... 
Sembra, ma non è :-) Ora si spiega tutto.
Una stringa, in javascript, non può andare a capo nel vero senso
della parola; deve rimanere tutta su una riga e contenere i *caratteri*
che in seguito la mostreranno formattata a dovere.
stringa='... cellspacing="0" cellpadding="0">\r\n <tr>\r\n <td height="20"></td> ecc. ecc.'; 
(senza mai andare a capo)
Per ottenere un risultato del genere non hai scelta: devi operare sul server. Io ti fornisco
l'occorrente in php, tu prova a tradurlo (o a fartelo tradurre) in java.
<?php
function Sost_Accapo($s) {
$s=preg_replace("/(\r\n|\n)/", "\\r\\n", $s);
return $s;
}
$str='<table width="504" border="0"
cellspacing="0" cellpadding="0">
              <tr>
                <td height="20"></td>
              </tr>
            </table>';
?> 
[...]
document.getElementById('testo').value ='<?php echo Sost_Accapo($str); ?>';


 document.getElementById('testo').value ='<?php echo Sost_Accapo($str); ?>';
Ora che mi ci fai ragionare mi torna anche a me!!
La funzione preg_replace("/(rn|n)/", "\r\n", $s);
sostituisce /(\r\n|\n)/ con \\r\\n per la stringa passata?
Perchè io ho tradotto questo in java:
T = T.replaceAll("\\r\\n","/(\r\n|\n)/"); 
ma continua a non funzionare....
Lupin


 ma continua a non funzionare....
E' un linguaggio che non conosco, non so se la sintassi č corretta.
Vado a caso, prova:
T = T.replaceAll("\n", "\\n");
Ho eliminato il carriage return, che potrebbe non servire. Ora esegui lo
script, scopri il sorgente della pagina (elaborata dal java) e vedi
quale output ottieni.
P.S. Siamo "lievemente" OT :)


 P.S. Siamo "lievemente" OT :)
Se sostituisco \n e \r  con \\n e \\r mi stampa i caratteri n e r.
Siamo OT? Credi che debba passare a it.comp.java?


 Credi che debba passare a it.comp.java?
Se non fosse che ti vedo a un passo dalla soluzione risponderei di sì;
viste però come stanno le cose suggerisco un sano ed empirico
smanettamento. Poi, oh, se proprio ti accorgi di non uscirne, allora vai
tranquillo e chiedi lumi; credo che per un esperto di java si tratti di
risolvere qualcosa di estremamente semplice.


 Se sostituisco \n e \r  con \\n e \\r mi stampa i caratteri n e r.
triplica la \ ...
-- 
"Emancipate yourselves from mental slavery;
None but ourselves can free our minds"
									    B.M.

 > Siamo OT?




Grazie mille!!! Ora provo un po e poi eventualmente passo nell'altro
newsgroup.


 triplica la  ...
Se triplico la \ mi da di nuovo errore.....


Attenzione, dando una letta veloce mi è sembrato che siate fuori
strada....
per andare a capo in una "TextArea" bisogna inserire il tag <br />...!

 per andare a capo in una "TextArea" bisogna inserire il tag <br />...!
Sicuro? Non rimane che provare. Copiaincolla in un file.html e clicca sul
pulsante:
<html><head>
<script type="text/javascript">
function f() {
document.getElementById('testo').value = "vado a capo<br />o almeno credo";
}
</script>
</head>
<body>
<form>
<textarea id="testo" rows="10" cols="50"></textarea>
<input type="button" value="clicca" onclick="f()">
</form></body></html>
Ora sostituisci "<br />" con "\n" :)



Ho fatto proprio una figuraccia.... il bello è che ho avuto a che fare
con questo poco tempo fa, e m sembrava di aver risolto in quel modo!
devo mangiare più fosforo :-P
Saluti e scusate l'intrusione poco produttiva :-)


 devo mangiare piů fosforo :-P
E siccome di fosforo sembra ce ne sia in abbondanza nel pesce, non sei
neanche messo male: un cacciucco alla livornese al giorno e ti togli il
pensiero. Parola di livornese :-)
