Codierung des Webbrowsers

  • VB.NET
  • .NET 5–6

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von Maltur.

    Codierung des Webbrowsers

    Hallo zusammen,

    ich benötige wieder mal eure Unterstützung.

    Skizzierung des Problems:
    Ich habe mir ein kleines Tool gebaut, das bestimmte Werte in eine Intranetseite hinzufügt und abspeichert. Da ich leider keinen Zugriff auf die Programmierung habe, habe ich es über den "Webbrowser" umgesetzt, was auch gut funktioniert.
    Das Problem tritt nun auf, wenn man mit Umlaute arbeitet. Ich könnte das bestimmt mit "ersetzen" lösen, aber das würde ich nur als letztes mittel nutzen wollen.

    Die Intranetseite kann generell auch mit Umlaufe arbeiten. Leider werden im "Programm-Webbrowser" keine Umlaute, sondern irgendwelche "Zeichen" angezeigt und kann dementsprechend auch nicht mit Umlaute arbeiten, was sich dadurch bemerkbar macht, dass beim Speichern ein Fehler auftritt.

    Ich bin wirklich kein Profi, aber ich könnte mir Vorstellen, dass es an der Codierung liegt. Die intranetseite hat das charset utf8 was aber aktuell durch den "Webbrowser" nicht unterstützt wird.

    Mein Wunsch:
    Ich würde gerne wollen, dass der "Webbrowser" die Umlaute anzeigt und auch damit arbeiten kann. Es ist nicht zwingend notwendig, dass der "Webbrowser" die Umlaute anzeigt, jedoch aber mit diese arbeitet.

    Leider habe ich keine Idee, wie ich es umsetzen kann und bedanke mich schon mal für jede Unterstützung.

    Viele Grüße

    *Topic verschoben*

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Marcus Gräfe“ ()

    @Maltur Das Zauberwort heißt Encoding.
    Auch wenn ich nix mit NET 6 am Hut habe, diese Codierung der Zeichen sollte es da auch geben.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo Rod,

    vielen Dank für deine Nachricht.
    Das habe ich schon versucht mit "system.text.encoding.utf8" oder ähnliches, leider ohne Erfolg. ich habe Probleme dies mit dem Webbrowser in Verbindung zu bringen. Die Daten stehen erstmal in einer Datagridview (werden via csv geladen) und von dort dann in eine Eingabemaske des Intranets eingetragen.

    Hier ein kleiner Abschitt, wo ich das Problem vermute. Das restliche Programm hat relativ wenig mit der Webbrowser-Schnittstelle zu tun.

    VB.NET-Quellcode

    1. Dim wbf As HtmlElement = WebBrowser1.Document.Forms("xxx")
    2. With DgvAddValue.Rows(i)
    3. wbf.GetElementsByTagName("input").Item("PC_MAC").SetAttribute("Value", .Cells("colPC_MAC").Value)
    4. wbf.GetElementsByTagName("input").Item("PC_IP").SetAttribute("Value", .Cells("colPC_IP").Value)
    5. wbf.GetElementsByTagName("input").Item("PC_Name").SetAttribute("Value", .Cells("colPC_Name").Value)
    6. ...
    7. End With
    8. wbf.InvokeMember("submit")


    Ich bin eigentlich System- und Netzwerkadministrator und benutze das bisschen Programmieren was ich kann, um mir mein Leben etwas einfacher zu machen.
    Wäre es möglich mir ein Codebeispiel zu zeigen, an dem ich mich orientieren kann?

    Viele Grüße
    Zur Sicherheit für die anderen, weil es mir zumindest unklar ist:
    • Du verwendest zur Ansicht der Intranetseite ein eigenes Programm?
    • Darin verwendest Du das WebBrowser-Control?
    • Werden bei Dir in Deinem Programm bei der Ansicht aufgrund der Verwendung des WebBrowser-Controls Umlaute nicht angezeigt?
    • Betrifft das nur die von Dir erstellten Umlaute oder alle ggf. schon vorher vorhandenen Umlaute, die Du nicht selbst erstellt hast?
    • Werden Umlaute in anderen Browsern richtig angezeigt, wenn diese von Deinem Programm eingespielt wurden?
    btw: Hattest Du schon z.B. den stackoverflow-Artikel zu diesem Problem angeschaut?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „VaporiZed“ ()

    Hallo VaporiZed,

    - Du verwendest zur Ansicht der Intranetseite ein eigenes Programm?
    ja, das selbstgeschriebene

    - Darin verwendest Du das WebBrowser-Control?
    ja

    - Werden bei Dir in Deinem Programm bei der Ansicht aufgrund der Verwendung des WebBrowser-Controls Umlaute nicht angezeigt?
    richtig

    - Betrifft das nur die von Dir erstellten Umlaute oder alle ggf. schon vorher vorhandenen Umlaute, die Du nicht selbst erstellt hast?
    das betrifft alle Umlaute, auch die bereits vorhandenen

    - Werden Umlaute in anderen Browsern richtig angezeigt, wenn diese von Deinem Programm eingespielt wurden?
    Soweit kommt es garnicht. bei dem versucht die eingetragenen Umlaute zu speichern, stürzt das programm ab bzw. zeigt das Browser-Control eine Fehlerseite an und die Daten werden nicht eingetagen.

    - btw: Hattest Du schon z.B. den stackoverflow-Artikel zu diesem Problem angeschaut?
    ja, habe es aber nicht zum laufen bekommen

    ich hoffe ich konnte damit deine offenen Fragen beantworten.

    Viele Grüße

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Maltur“ ()

    Zu der Frage, die ich unverständlich formuliert hatte: Kannst Du die Intranetseite z.B. mit Firefox aufrufen und wenn ja, werden dort die Umlaute richtig angezeigt?
    Ich hatte noch einen Link zu einem stackoverflow-Thread gepostet. Hattest Du den beachtet?
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo VaporiZed,

    ich habe meinen letzten Post nochmal bearbeitet, hatte es beim ersten mal nicht richtig verstanden. Über einen normalen Browser wird alles richtig angezeigt, das Problem tritt nur im Control auf.
    Auf dem Link war ich gestern beim suchen schon gestoßen, leider hatten meine Versuche keinen erfolg gebracht.
    Da das Webbrowser-Control z.B. diese Wikiseite über Umlaute bei mir problemlos anzeigen kann, kann ich da wohl nicht weiterhelfen, weil ich das Problem nicht nachstellen kann.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo VaporiZed,

    deine letzte Antwort brachte mich auf eine Idee, die ich gleich getestet habe. Tatsächlich kann das Browser-Control die Umlaute auf anderen Webseiten korrekt anzeigen und auch im Intranet, man muss nur im Browser-Control im Kontextmenü bei Codierung "UTF-8" auswählen, standardmäßig ist dort "Westeuropäisch (Windows)" ausgewählt, leider stellt es sich bei jeder Aktualisierung wieder zurück.
    Auch wenn ich dazu noch keine Lösung habe, wie ich es beheben kann, freue ich mich, dass ich wenigsten ein kleines Stück im Mysterium weiter gekommen bin.

    Ich bedanke mich bei dir für deine Unterstützung.

    Viele Grüße

    Maltur schrieb:

    standardmäßig ist dort "Westeuropäisch (Windows)" ausgewählt
    Das ist dann wohl keine Einstellung des WebBrowser-Controls, sondern der Seite. Wenn ich zu G**gle navigiere, kommt da Unicode (UTF-8) als Voreinstellung. Ich tipp einfach mal darauf, dass das WebBrowser-Control die Seiteneinstellung übernimmt, man das aber bei Bedarf wechseln kann. Teste das mal an verschiedenen Seiten, vielleicht muss einfach die Intranetseite angepasst werden.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Hallo vaporiZed,

    ich habe es zum laufen bekommen. Es wird zwar im Browser-Control nicht richtig angezeigt, aber die Daten werden korrekt übertragen und das ist das wichtigste.

    Die Codierung muss nur kurz vor der Übertragung angepasst werden wie untern nochmal gezeigt. Das Hauptproblem war das Verständnis.

    VB.NET-Quellcode

    1. Dim wbf As HtmlElement = WebBrowser1.Document.Forms("xxx")
    2. With DgvAddValue.Rows(i)
    3. wbf.GetElementsByTagName("input").Item("PC_MAC").SetAttribute("Value", .Cells("colPC_MAC").Value)
    4. wbf.GetElementsByTagName("input").Item("PC_IP").SetAttribute("Value", .Cells("colPC_IP").Value)
    5. wbf.GetElementsByTagName("input").Item("PC_Name").SetAttribute("Value", .Cells("colPC_Name").Value)
    6. ...
    7. End With
    8. WebBrowser1.Document.Encoding = "UTF-8" ' <-- hinzugefügt
    9. wbf.InvokeMember("submit")


    Viele Grüße