vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
CEFSharp und LoadHTML - Umlaute falsch angezeigt 
Autor: Dideldum
Datum: 28.07.23 19:25

Hi Ihr,

ich suche schon wieder tagelang nach einer Lösung...

Wenn ich im CEFSharp ein lokal gespeichertes HTML-Dokument mit

dim name as String = HTML_Dateiname
 
tsc_Webbrowser_CWebbrowserBox.LoadUrlAsync(name)
laden und anzeigen lasse, werden in dessesn Browser-Oberfläche die deutschen Umlaute korrekt angezeigt.


Verwende ich aber:

dim name as String = HTML_Dateiname
dim tmpText = System.IO.File.ReadAllText(name, System.Text.Encoding.UTF8)
 
tmpText = decryptText(tmpText, Objekt_CryptKey) ' verschlüsselt gespeichertes 
' Dokument entschlüsseln
 
tsc_Webbrowser_CWebbrowserBox.LoadHtml(tmpText, True)
Wobei nach der Decrypt-Funktion natürlich die Umlaute wieder korrekt im String enthalten sind.

Übergebe ich diesen String dann aber mit der Methode "LoadHTML" an den CEFSharp, werden die Umlaute in der Browser-Oberfläche nicht mehr korrekt angezeigt, sondern z.B. anstatt eines "ä" erscheint dann "ä".

Hier im Forum habe ich etwas über eine API-Funktion OEMtoChar gefunden.
Habe dazu aber im Web nur die Deklaration:

Declare Function OemToChar Lib "user32" Alias "OemToCharA" (ByVal lpszSrc As _
  String, ByVal lpszDst As String) As Long
gefunden, aber ganz ohne weitere Beschreibung, wie dieser Aufruf eingesetzt wird.
Ich verstehe nicht, wie ich diesen verwenden soll.
Wenn dies überhaupt der richtige Weg ist, den Fahler zu beseitigen...

Kann mir da vielleicht einer von Euch helfen, dass meine entschlüsselten HTML-Strings im CEFSharp unter Verwendung der LoadHtml-Methode korrekt angezeigt werden?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CEFSharp und LoadHTML - Umlaute falsch angezeigt 
Autor: Dideldum
Datum: 28.07.23 19:35

P.S.

In der Initialisierung des CEFSharp habe ich "Deutsch" angegeben:

    Private Function WebbrowserInitialisieren() As Boolean
        If startParameter = "" Then
            Try
                If Not IO.Directory.Exists(BrowserCacheDefaultPfad) Then _
                  IO.Directory.CreateDirectory(BrowserCacheDefaultPfad)
                Dim settings As New CefSharp.WinForms.CefSettings()
                'settings.RemoteDebuggingPort = 8088
                Dim LocalesDirPath As String = IO.Path.Combine( _
                  Environment.CurrentDirectory, "locales")
 
                settings.LocalesDirPath = LocalesDirPath
 
                settings.Locale = "de"
                settings.AcceptLanguageList = "de,de-DE"
 
                settings.PersistSessionCookies = True
                settings.CachePath = BrowserCacheDefaultPfad
 
                'Webbrowser_bookmarkseinlesen()
 
                Return CefSharp.Cef.Initialize(settings, True)
            Catch ex As Exception
                Dim form_exclamation As New Fehler_Fenster
                form_exclamation.Initialisiere(False, "Fehler!", "Im Modul:" & _
                  "'WebbrowserInitialisieren'" & vbCrLf & vbCrLf & "Haben Sie" & _
                  "das erforderliche MS-Paket 'Visual C++ Redistributable'" & _
                  "installiert?" & vbCrLf & vbCrLf & "Grund: " & ex.Message, _
                  MessageBoxButtons.OK, 4,, False)
                Return False
            End Try
        Else
            Return True
        End If
    End Function
Im Programmverzeichnis ist auch der Unterordner "locales" mit enthaltener "de.pak" enthalten.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CEFSharp und LoadHTML - Umlaute falsch angezeigt 
Autor: eierlein
Datum: 28.07.23 19:43

Du musst den Text als UTF8-Text übergeben.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CEFSharp und LoadHTML - Umlaute falsch angezeigt 
Autor: Dideldum
Datum: 28.07.23 19:52

Servus eierlein,

danke für Deinen Tip!

Aber mache ich das denn nicht bereits während des Ladens:

dim tmpText = System.IO.File.ReadAllText(name, System.Text.Encoding.UTF8)
Die CEFSharp-Methode "LoadHTML" kennt keine Überladung für das Encoding.
Wie mache ich das dann?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CEFSharp und LoadHTML - Umlaute falsch angezeigt 
Autor: Dideldum
Datum: 28.07.23 21:17

Auch der Tip aus ChatGPT

Dim tmpText = System.IO.File.ReadAllText(name, System.Text.Encoding.UTF8)
 
Dim htmlBytes As Byte() = System.Text.Encoding.UTF8.GetBytes(tmpText)
Dim base64String As String = Convert.ToBase64String(htmlBytes)
Dim dataUri As String = "data:text/html;base64," & base64String
 
tsc_Webbrowser_CWebbrowserBox.Load(dataUri)
zeigt keine deutschen Umlaute.

Woran kann das denn liegen?
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: CEFSharp und LoadHTML - Umlaute falsch angezeigt 
Autor: Dideldum
Datum: 28.07.23 21:30

Endlich...

man muss ChatGPT nur lange genug quälen, bis das Vieh eine korrekte Antwort ausspuckt:

Dim tmpText = System.IO.File.ReadAllText(name, System.Text.Encoding.UTF8)
tsc_Webbrowser_CWebbrowserBox.LoadHtml(tmpText, "http://Dummy.de")
So klappt es.

Es lag zu keiner Zeit an dem Encoding - das habe ich ja auf UTF8, sondern an der undokumentierten zweiten Überladung der LoadHTML-Methode. Normalerweise ist diese Überladung als "Base64Encode as boolean=false" beschrieben.
Damit hat es nicht funktioniert.
Wenn man aber eine URL als String als zweite Überladung eingibt, erscheint in der Ausfüll-Hilfe plötzlich als zweite Überladung "URL as String".
Und mit der Angabe einer Dummy-URL als zweite Überladung klappt es plötzlich mit dem Encoding.

Warum auch immer...

Beitrag wurde zuletzt am 28.07.23 um 21:48:04 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel