Ich benutze WebClient.DownloadFile
in C#, um Webseiten herunterzuladen. Sie können problemlos heruntergeladen werden, die Codierung ist jedoch häufig nicht eindeutig (keine Stückliste vorhanden). Der Mozilla Universal Charset Detector (port 1, port 2) bietet ein System zur Erkennung der Codierung von Klartextdateien mit Heuristiken und this bietet eine noch einfachere Methode, die weniger Codierungen erkennt.Wie man eine Webseite in UTF8 unabhängig von ihrer Codierung entschlüsselt
Also erstens sind HTML-Webseiten sogar in seltsamen Kodierungen wie Shift-JIS und EUC-KR kodiert? Wenn nicht, kann eine schnellere Erkennungsmethode verwendet werden, die davon ausgeht, dass es sich um ASCII/ANSI oder UTF8 handelt.
Zweitens, wie geht man nach dem Erkennen der Codierung, um die byte[]
der Datei in eine geeignete UTF8-Zeichenfolge zu dekodieren? Und kann ich nach einer String-Verarbeitung die Datei mit einer UTF8-Stückliste wieder auf den Datenträger speichern? Oder müsste ich zusätzliche Tags wie <meta charset="utf-8"..">
in die HTML-Datei hinzufügen?
ich hatte das gleiche Problem. Die deklarierte Codierung ist manchmal völlig falsch (ganz zu schweigen davon, dass es im Text der Webseite deklariert ist, die zuerst entschlüsselt werden muss http://www.w3schools.com/tags/att_meta_charset.asp), die Stückliste ist fast immer vermisst. Ich denke, Heuristiken sind die einzig vernünftige Lösung. –