Avatar billede koldstar Nybegynder
28. september 2007 - 09:42 Der er 7 kommentarer og
1 løsning

dankse tegn i webclient.DownloadData

Hey eksperter.
Jeg benytter webclient.DownloadData til at hente indholdet af en webside ned. Jeg har dog et problem med danske tegn. Er der nogen der har et forslag?

Her er hvad jeg har prøvet:

....
Uri siteUri = new Uri(Url);
byte[] Result = Http.DownloadData(siteUri);
Encoding enc = Encoding.GetEncoding("iso-8859-1");
MergedText = enc.GetString(Result);
....
Avatar billede koldstar Nybegynder
28. september 2007 - 10:01 #1
Hej igen
Det virker hvis jeg sætter denne linie under ovenstående kode... Men det er lidt fusket...

MergedText  = MergedText.Replace("charset=iso-8859-1", "charset=UTF-8");

Hvis jeg encoder til utf-8 direkte virker det ikke...
Findes der en anden måde?
Avatar billede hmortensen Nybegynder
28. september 2007 - 15:14 #2
Du kan sætte WebClient's Encoding property.
Http.Encoding = System.Text.Encoding.UTF8;
MergedText = Http.DownloadString(siteUri);
Avatar billede arne_v Ekspert
29. september 2007 - 03:12 #3
Så vidt jeg kan gennemskue så:
  - har du en ASP.NET side lad os kalde den x.aspx
  - den henter en anden side lad os kalde den y.php
  - y.php returnerer ISO-8859-1
  - y.php fortæller browseren at den returnerer ISO-8859-1 ikke ved en HTTP header
    men ved et META tag
  - din WebClient download virker upåklageligt og du får det rigtige indhold læst
    ind i .NET
  - problemet opstår når x.aspx outputter de læste data igen fordi din server
    fortæller browseren at den outputter UTF-8 og den faktisk skriver UTF-8
  - men browseren tror naturligvis på det META tag der siger ISO-8859-1

Jeg kan se 3 mulige løsninger:
1) den du selv nævner
2) helt slette det META tag
3) lad din side (x.aspx ovenfor) outputte ISO-8859-1
Avatar billede koldstar Nybegynder
29. september 2007 - 17:10 #4
Tak begge to.
hmortensen: Det virker umiddelbart ikke at sætte encodingen på webclient. Det skyldes sikkert, som arne_v beskriver at det er et META tag der sætter encodingen. Jeg tror jeg beholder den løsning jeg har da jeg ikke har mulighed for at fjerne META-tagget.
Ligger du et svar arne_v?
Avatar billede arne_v Ekspert
29. september 2007 - 20:29 #5
Mit forslag var at fjerne META tag i dit output.

Og svar.
Avatar billede koldstar Nybegynder
01. oktober 2007 - 10:41 #6
ups... jeg har da lige fundet ud af at det ikke virker alligevel :-)

Siden henter noget javascript ind der ikke virker hvis jeg bruger min "fuskede replace-løsning". Det virker kun hvis META står til ISO-8859-1 eller er fjernet.

Jeg har nu fået fjernet META tag fra sourcen (altså den arne_v kalder y.php), men jeg får så samme fejl som jeg startede med.

Har I nogle forslag?
Avatar billede koldstar Nybegynder
01. oktober 2007 - 10:55 #7
jeg kan lave noget replace ø = ø osv... Men håber der findes en anden løsning
Avatar billede koldstar Nybegynder
02. oktober 2007 - 11:19 #8
Jeg lukker denne her. Det virker og jeg får nok ikke tid til at lave det på en anden måde foreløbig :-)
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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