| |
VB.NET - Ein- und UmsteigerCEFSharp 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? | |
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. | |
Re: CEFSharp und LoadHTML - Umlaute falsch angezeigt | | | Autor: eierlein | Datum: 28.07.23 19:43 |
| Du musst den Text als UTF8-Text übergeben. | |
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? | |
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? | |
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. | |
| 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 |
|
|
sevWizard für VB5/6
Professionelle Assistenten im Handumdrehen
Erstellen Sie eigene Assistenten (Wizards) im Look & Feel von Windows 2000/XP - mit allem Komfort und zwar in Windeseile :-) Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|
|
|
Copyright ©2000-2025 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
|
|