3 messaggi dal 13 febbraio 2002
Salve, quando la pagina che vado a leggere contiene caratteri come quello dell'Euro (?) oppure caratteri accentati (à,è) che non sono stati codificati in html mi viene restituito "?" invece del carattere.

Ho provato a impostare vari tipi di charset con SetRequestHeader, ma sembra che XMLHTTP non gestisca questo tipo di caratteri.
Come posso fare?
Altri oggetti come WinHTTP.WinHTTPRequest.5 hanno lo stesso problema?
Grazie.
Modificato da urla@libero.it il 14 luglio 2003 12.22 -
Il problema è la codifica dei caratteri ma da parte del Server (che ti restituisce il file) e non da te che lo leggi. Quindi se il Server usa una codifica UTF-8 (se non erro) avrai sempre quel problema con tutti i component di questo mondo (che del resto non fanno altro che fare delle semplici richieste HTTP).

--
Andrea Palmatè
3 messaggi dal 13 febbraio 2002
La pagina che vado a leggere ha un charset iso-8859-1 e comunque proviene dallo stesso server che processa la pagina (sono io l'autore di entrambe).
Posso modificare qualcosa della pagina che leggo, apparte codificare tutti i possibili caratteri "particolari" in html, per far si che tutti i caratteri siano leggibili, come dovrebbe essere visto che il browser li legge?
Grazie.
devi semplicemente cambiare la codifica. Prova a mettere:

Response.CharSet = "utf-8"

--
Andrea Palmatè
iso-8859-1 infatti non contiene il simbolo dell'euro. prova con latin9, nome volgare di iso-8859-14

Daniele Bochicchio | ASPItalia.com | Libri
Chief Operating Officer@iCubed
Microsoft Regional Director & MVP
3 messaggi dal 13 febbraio 2002
Il problema era che XMLHTTP tenta di codificare la pagina come utf-8 nonostante gli header che riceve.
Ho utilizzato quindi questa funzione per convertire da binario a stringa il responseBody e funziona!
Grazie comunque per il vostro lavoro che mi aiuta tutti i giorni.

Function BinaryToString(Binary)
'Antonin Foller, http://www.pstruh.cz
'Optimized version of a simple BinaryToString algorithm.

Dim cl1, cl2, cl3, pl1, pl2, pl3
Dim L
cl1 = 1
cl2 = 1
cl3 = 1
L = LenB(Binary)

Do While cl1<=L
pl3 = pl3 & Chr(AscB(MidB(Binary,cl1,1)))
cl1 = cl1 + 1
cl3 = cl3 + 1
If cl3>300 Then
pl2 = pl2 & pl3
pl3 = ""
cl3 = 1
cl2 = cl2 + 1
If cl2>200 Then
pl1 = pl1 & pl2
pl2 = ""
cl2 = 1
End If
End If
Loop
BinaryToString = pl1 & pl2 & pl3
End Function

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.