PDA

View Full Version : [javascript] caratteri sostituiti da "?"


MEMon
27-01-2007, 13:44
Mi capita che i caratteri tipo "à" vengano sostituiti da un "?" a cosa è dovuto?

MEMon
27-01-2007, 13:50
Il problema ce l'ho quando leggo del testo da una pagina tramite una chiamata AJAX, se nel testo che leggo c'è un carattere tipo "à", esso viene sostituito da un "?", come mai?
Posso rimediare? Mi crea non pochi problemi...

0rph3n
27-01-2007, 14:09
dai una letta qui (http://it.wikipedia.org/wiki/Aiuto:Caratteri_speciali)
EDIT: oppure anche meglio qui (http://xhtml.html.it/faq/leggi/107/caratteri-speciali-in-una-pagina-html/)

'iao

MEMon
27-01-2007, 14:38
Ti ringrazio ma il mio problema è che mi arrivano dei punti interrigativi al posto dei caratteri speciali, non devo scriverli io sulla pagina html, sono già scritto, io devo solo leggerli come tali.
COme posso fare?

0rph3n
27-01-2007, 16:48
e chi li scrive quei caratteri?

-fidel-
27-01-2007, 16:57
Ti ringrazio ma il mio problema è che mi arrivano dei punti interrigativi al posto dei caratteri speciali, non devo scriverli io sulla pagina html, sono già scritto, io devo solo leggerli come tali.
COme posso fare?

Sarà un problema di codifica? Quando leggi dei caratteri da remoto, normalmente essi vengono trasferiti come un flusso di bytes, che sta a te interpretare secondo una codifica corretta.
Anche per questo nacque UTF-8 ;)

MEMon
27-01-2007, 16:59
si è un problema di codifica, come posso fare a leggere tutto cm si deve?

MEMon
27-01-2007, 17:02
e chi li scrive quei caratteri?
Chiunque, anche te volendo se hai una pagina web :D

-fidel-
27-01-2007, 17:05
si è un problema di codifica, come posso fare a leggere tutto cm si deve?

Prova a forzare la codifica dello stream letto.
Faccio un esempio in C++ QT (non so che tipo dati stai usando in Java per leggere lo stream):

QString stringa;
// Leggo la stringa da remoto.
QString stringa2 = stringa.utf8();

Ovviamente devi sapere la codifica del documento da cui leggi i dati, normalmente è UTF-8, ormai standard adottato praticamente da tutti, come da direttive ISO.
Cerca un metodo analogo sulla classe java che stai usando, magari se posti il pezzettino di codice ;)

MEMon
27-01-2007, 17:13
Sto usando javascript non java e non trovo nulla che possa fare una conversione del genere, c'è qualcosa in php ma in javascript nn lo trovo(cerco ancora xò).
Comunque devo leggere delle pagine html che hanno questo nell'head:
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

So che quando leggo qualcosa da remoto viene forzato un utf-8, potrebbe essere lì l'errore?
Solo che se così fosse non saprei dove mettere le mani.

-fidel-
27-01-2007, 17:22
Puoi usare setCodeBase(string s) o setEncoding (string s) mi pare.

EDIT: ah, string s è la stringa che definisce la codifica, tipo:
Application.ActiveDocument.SetEncoding("UTF-8");

cmq vedevo che ora si usa fare:
Application.ActiveDocument.Encoding = "UTF-8";

Prova a settare l'encoding su Latin-1 (o ISO-9886-1, è lo stesso). Se la lettura da remoto viene fatta come uno stream di byte, la codifica spetta solo al tuo script (quindi come lo script codifica lo stream letto).

MEMon
27-01-2007, 17:34
Ho trovato quello che fa per me, in pratica forzo l'header della pagina che vado a leggere con la codifica ISO-8859-1:
httpRequest.overrideMimeType("text/html; charset=ISO-8859-1");

In questo modo il server mi manda il testo già bello e pronto altrimenti era porpio il server che mi mandava un "?" al posto dei caratteri speciali, quindi sarebbe stata inutile qualsiasi codifica!

Ti ringrazio per avermi aperto gli occhi sulle codifiche!!!
grazie mille!

-fidel-
27-01-2007, 18:06
Ho trovato quello che fa per me, in pratica forzo l'header della pagina che vado a leggere con la codifica ISO-8859-1:
httpRequest.overrideMimeType("text/html; charset=ISO-8859-1");

In questo modo il server mi manda il testo già bello e pronto altrimenti era porpio il server che mi mandava un "?" al posto dei caratteri speciali, quindi sarebbe stata inutile qualsiasi codifica!

Ti ringrazio per avermi aperto gli occhi sulle codifiche!!!
grazie mille!

Figurati ;)