WebBrowserコントロールのDocumentTextプロパティの罠
WebBrowserコントロールで表示しているHTMLをXHTMLに清書しようと
webBrowser1.DocumentText
を入力としてTidy.NETやtidy.dllやHTML2XHTMLを使うと不思議と文字化けします。エンコーディングにUTF-8を指定してもダメ。
で、原因がわかりました。HTMLがShift-JISで書かれている場合にDocumentTextプロパティの値が文字化けするようです。ヘッダでエンコーディングが指定されてないのが原因かも。
webBrowser1.Document.Body.OuterHtml
などは正常なので、気づきにくい罠です。
こうやって文字化けを直してあげると、Tidy.NETで正常にXHTMLへ変換できました。
MemoryStream reader = (MemoryStream)this.window.DocumentStream; byte[] bytes = reader.ToArray(); string html = Encoding.GetEncoding("shift_jis").GetString(bytes);