Avatar billede falslev Nybegynder
25. marts 2008 - 12:33 Der er 20 kommentarer

ServerXMLHTTP og danske tegn

Forsøger at indlæse en side men alle æøå bliver erstattet med ?

Hvad gør jeg?

Min kode jeg henter med ser sådan her ud:

Testurl = "http://www.eb.dk"

Set objXMLHTTP = Server.CreateObject("Msxml2.ServerXMLHTTP.4.0")
  objXMLHTTP.Open "GET", Testurl, false
  objXMLHTTP.Send
  t = objXMLHTTP.responseText
Set objXMLHTTP = Nothing
Avatar billede mitbrugernavn Praktikant
25. marts 2008 - 17:43 #1
sætte dette i toppen af din fil

<% Response.CacheControl = "no-cache" %>
<% Response.AddHeader "Pragma", "no-cache" %>
<% Response.Expires = -1 %>
<%Response.charset="iso-8859-1"%>
Avatar billede falslev Nybegynder
25. marts 2008 - 22:18 #2
Virker desværre ikke :(
Avatar billede softspot Forsker
30. marts 2008 - 15:12 #3
Jeg mener du skal sætte en request-header på XML-objektet:

objXMLHTTP.setRequestHeader "Content-Type", "text/html; charset=ISO-8859-1"

Alternativt kan du prøve med UTF-8 i stedet for ISO-8859-1.
Avatar billede falslev Nybegynder
31. marts 2008 - 08:36 #4
Har jeg desværre forsøgt og det virker ikke.
Avatar billede softspot Forsker
31. marts 2008 - 11:58 #5
Kan du ikke prøve at aflæse response-headeren i det resultat du få tilbage, for at se om der evt. skulle være en indikation af hvilken encoding resultatet er?

Eksempelvis:

Testurl = "http://www.eb.dk"

Set objXMLHTTP = Server.CreateObject("Msxml2.ServerXMLHTTP.4.0")
objXMLHTTP.Open "GET", Testurl, false
objXMLHTTP.Send
response.write objXMLHTTP.getAllResponseHeaders() & "<br>"
t = objXMLHTTP.responseText
Set objXMLHTTP = Nothing
Avatar billede softspot Forsker
31. marts 2008 - 11:59 #6
Der kunne jo også være noget i vejen med den encoding du bruger til at præsentere data, dvs. hvis din side er encoded som Windows-1252 og dit resultat fra eb.dk er encoded i UTF-8, så vil der opstå sære tegn - det skal helst passe sammen... :)
Avatar billede falslev Nybegynder
31. marts 2008 - 13:00 #7
Det gir følgende svar:

Content-Type: text/html Content-Length: 101243 Date: Mon, 31 Mar 2008 10:58:44 GMT Server: Apache-Coyote/1.1 Age: 79 X-Cache: HIT from iodine.lp.jppol.dk Connection: keep-alive

Gør det dig klogere?
Avatar billede softspot Forsker
31. marts 2008 - 13:34 #8
Ikke rigtig, må jeg nok erkende :)

Hvordan bruger du det resultat du henter? Jeg tænker på hvordan præsenterer du data og dermed konstaterer at der er noget galt med encoding... Hvis det er på en webside, kan du så evt. linke til denne side?
Avatar billede falslev Nybegynder
01. april 2008 - 16:10 #9
Du kan se min test her: http://falslev.dk/test.asp
Avatar billede softspot Forsker
01. april 2008 - 16:27 #10
Kan du evt. afsløre hvor du henter data fra?
Avatar billede falslev Nybegynder
01. april 2008 - 16:32 #11
Avatar billede olebole Juniormester
01. april 2008 - 16:34 #12
<ole>

Du skal holde samme tegnsæt (og utf-8 det, der bør bruges i dag) gennem _hele_ kæden:

*) Din databases kollationer skal være utf-8.
*) Din server skal sende dokumenterne som utf-8 (eller du må manuelt sætte en korrekt http-header)
*) Du skal bruge en utf-8 meta
*) Du skal gemme dokumenterne med korrekt encoding

- men hvorfor kontakter du ikke bare EkstraBladet og spørger, om de vil levere et feed med resultater. Dem, du henter ved screenscraping, må du jo alligevel ikke bruge til noget  ;o)

/mvh
</bole>
Avatar billede olebole Juniormester
01. april 2008 - 16:37 #13
Du har jo i øvrigt det problem, at bold.dk og eb.dk kører iso-8859-1 - som er temmelig outdated. Det er ikke så smart, hvis dit eget setup er mere tidsvarende (= bruger utf-8). Så _skal_ der komme konflikter  :o|
Avatar billede falslev Nybegynder
01. april 2008 - 16:44 #14
Tak for din kommentar. Er dog ikke helt med på hvad løsningen er.
Avatar billede olebole Juniormester
01. april 2008 - 16:45 #15
Hvad er det, du er i tvivl om. Vi har da ellers været hele vejen rundt  :)
Avatar billede falslev Nybegynder
01. april 2008 - 16:46 #16
Hvad gør jeg i min kode for at få det til at virke.
Avatar billede olebole Juniormester
01. april 2008 - 16:49 #17
Det kan da ikke passe, du intet har forstået af det, vi har skrevet
Avatar billede falslev Nybegynder
01. april 2008 - 17:05 #18
Jo. Er rest lost i det her efterhånden med tegnsæt osv osv osv

hvad kan jeg forsøge mig med?
Avatar billede olebole Juniormester
01. april 2008 - 23:17 #19
Det kommer anpå, hvad du vil. Både eb.dk og bold.dk bruger begge iso-8859-1. Så kunne du selvfølgelig vælge at gøre det samme, men det giver let problemer, da utf-8 er ved at være international standard.
Derfor kan iso-8859-1 løse dit problem ligenu - men det kan let give problemer på længere sigt. Hvis du på et tidspunkt vil kommunikere med resten af verden - eller med danskere, som gerne vil (og derfor bruger utf-8) - så vil du få tilsvarende problemer.

I PHP findes native funktioner til at 'oversætte' frem og tilbage mellem ANSI (iso-8859-1) og Unicode (utf-8), men det findes mig bekendt ikke i VBScript. Var det mig, ville jeg nok bruge utf-8 og gøre, som jeg skrev i kommentaren (01/04-2008 16:34:34) - samt på én eller anden måde strikke en funktion sammen, der kan 'oversætte' fra iso til utf ... eller måske finde en færdig på nettet  :)
Avatar billede falslev Nybegynder
02. april 2008 - 15:19 #20
Har blot et webhotel så kan ikke ændre så meget på server opsætningen.

Jeg kunne leve med bare at skulle lave et find and replace kald, men det virker heller ikke.
Det er som om at ? ikke bliver set som ?, men det er måske også pga. encoding?

Virker ikke:
Replace(DataString, "FC K?avn", "FC Købenavn", 1, -1, 0)

Kan man her gøre noget?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester