Avatar billede DyhrIversen Nybegynder
20. september 2011 - 15:05 Der er 19 kommentarer og
1 løsning

WebBrowser.DocumentText encoding / decoding

Jeg har et webbrowser objekt som jeg bruger til at hive kildekode ud fra en side (jeg skal bruge enkelte felter)
Jeg står i den situation at når man ser data i browseren vises ÆØÅ helt fint, og det gør den også i "view sourcecode" på browserobjektet, men når jeg udskriver kildekode til en tekstbox vises det helt forkert.

View source:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<script type="text/javascript">
function delete( url ){
  if( confirm("Er du sikker på at du vil slettet ?" ) ){
    location.href=url;
  }
}
</script>
...

Resultat:
...
if( confirm("Er du sikker p&#65533; at du vil slettet ?" ) ){
...
Avatar billede DyhrIversen Nybegynder
20. september 2011 - 15:06 #1
å'et i resultatet er i min tekstbox udskiftet af en firkant, og i ovenstående af &#65533;
Avatar billede Syska Mester
20. september 2011 - 15:49 #2
Avatar billede DyhrIversen Nybegynder
20. september 2011 - 16:10 #3
Jeg kan ikke få adgang til HttpUtility, jeg leger med en Windows Form.

Her er min kildekode:


using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(webBrowser1_DocumentCompleted);
        }

        void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
        {
            string source = webBrowser1.DocumentText;
            textBox1.Text = source;
        }
    }
}

findes der andre encode / decode? jeg frygter det er tegnsættet der driller
Avatar billede Syska Mester
20. september 2011 - 16:17 #4
Du skal tilføje en reference til: System.Web

Nej, jeg mener ikke den klasse er andre steder. Men du kan måske finde et 3 parts library som kan.

Problemer er at den er Html Encoded, derfor skal den Decodes.

En browser kan finde ud af det automatisk hvis tegnsætninger sæt rigtig op.

Hvis du prøver at udskrive det i en WindowsForms TextBox, så får du følgende ud. Altså den Encoded String.

mvh
Avatar billede DyhrIversen Nybegynder
20. september 2011 - 17:10 #5
jeg har prøvet at bruge:

Using System.Web;

uden held for at få adgang til HttpUtility

Har du andre forslag? jeg bruger .Net 4.0 Framework.

Ovenstående er netop ved at jeg har har lavet en textbox der viser kildekoden råt. jeg vil bare gerne have den til at skrive æøå i min textbox.
Avatar billede Syska Mester
20. september 2011 - 23:10 #6
Du skal tilføje en reference til den ddl som hedder "System.Web.Dll"

Højre klik på mappen "references".

step 1) add reference.
step 2) En using statement.
step 3) At bruge den

mvh
Avatar billede DyhrIversen Nybegynder
21. september 2011 - 09:36 #7
Kunne ikke finde den grundet .Net 4 Client profile, man skal lige huske at skifte til fuld version.

Ikke desto mindre har det ingen effekt da det ikke er et spørgsmål om htmlencode/htmldecode, men derimod noget med tegnsæt at gøre.

Jeg kan ikke finde ud af at konvertere fra ISO-8859-1 til UTF-8, men det kan IE's "View source".

Jeg har forsøgt at konvertere med info fra denne url: www.chilkatsoft.com/p/p_203.asp
Avatar billede Syska Mester
21. september 2011 - 10:00 #8
Well ... hvis det ser sådan ud, så er det i min verden en Html Entity.

Hvorfor den så har fået 65533 hvilket google siger er en misplaced/wrong/error entity er lidt mærkeligt.

Hvordan er den string blevet skabt?

For det er nemlig heller ikke hverken UTF8, Unicode eller ISO-8859-1 som vist er latin2 eller noget i den retning.

Den bruger jo her 8 bytes på at vise noget der "bare" skulle være "å" og det kan jo ikke passe.

Kan du poste lidt mere source kode, så jeg eventuelt kan teste det i min ende ... for der må helt sikkert være mere end bare det som går galt.

mvh
Avatar billede Syska Mester
21. september 2011 - 10:01 #9
Hvordan hiver du den ene linje ud af din html source ?

mvh
Avatar billede DyhrIversen Nybegynder
21. september 2011 - 10:26 #10
Jeg har sendt dig kildekode.
Jeg har lavet en Form med split container.

I venstre side har jeg en WebBrowser, og i højre en textbox.

Jeg har kun ændret url, ellers er alt default, og så lavet koden som er i kommentar #3!

For hver side jeg besøger viser den automatisk kildekoden i højre side.
Avatar billede Syska Mester
21. september 2011 - 10:48 #11
wow. tænke tænke.

Det virker jo sygt mærkeligt. Men nu er jeg generelt heller ikke super glad for den indbyggede browser i .NET. Mange mener vist den er lidt buggy.

For hvis du gør følgende:
WebClient webClient = new WebClient();
            string downloadString = webClient.DownloadString("http://www.monitordk.dk/cms/");
            textBox1.Text = downloadString;

Så virker det uden problemer. å er å etc.

Der sker et eller andet mærkelig konvertering jeg ikke lige kan forklare.

mvh
Avatar billede DyhrIversen Nybegynder
21. september 2011 - 11:03 #12
jeg så helst URL ikke blev offentliggjort :)

nå skidt det kan jo ikke laves om...

jeg er nød til at bruge browser for at kunne komme igennem login med cookie :)
Avatar billede Syska Mester
21. september 2011 - 11:19 #13
Du skrev du havde lavet url om, men den misforstod jeg nok.

ja, jeg tænkte nok det var sådan noget. Men bliver nød til at sprøge hvorfor du vil lave en app som har en browser?

Det virker mere om om der burde laves et Webservice API, så du kan lave en rigtig App, i stedet for dette. Men du har helt sikkert dine grunde ... som min hjerne ikke lige kan overskue en tidlig onsdag morgen :-)

mvh
Avatar billede DyhrIversen Nybegynder
21. september 2011 - 11:23 #14
simpel årsag, jeg ejer ikke cms systemet, men hjemmesiden, og jeg vil have data ud og ind i et andet cms system (mit eget). jeg orker dog ikke at kopiere manuelt når man nu kan gøre det automatisk!

og så er det jo en udfordring :)
Avatar billede Syska Mester
21. september 2011 - 11:29 #15
Ahhh, se det er jo en god grund hvis der er meget data :-)

Men er det så ikke lidt ligemeget med den js besked? Jeg håber alt andet i det CMS er encoded rigtigt og ikke giver problemer.

mvh
Avatar billede DyhrIversen Nybegynder
21. september 2011 - 11:33 #16
Det er lige præcis det der er fejlen, det er det ikke, og det jeg skal have ud står også encoded.
Avatar billede Syska Mester
21. september 2011 - 11:43 #17
Virker mere som dem der har lavet det netop ikke har encoded de ting ... hvis der bliver vist som ÆØÅ.

mvh
Avatar billede DyhrIversen Nybegynder
21. september 2011 - 12:07 #18
ja, og det er lige præcis det jeg skal sørge for at kunne ændre via mit script... ellers skal jeg finde ud af hvordan jeg kan lave en webclient der kan logge ind og hive data ud...
Avatar billede DyhrIversen Nybegynder
04. november 2011 - 07:21 #19
andre der har et forslag ellers går point til buzzzz
Avatar billede Syska Mester
04. november 2011 - 09:49 #20
svar
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