htmltext = "HTMLソース"
WebBrowser2.DocumentText = htmltext
このようにwebbrowserの内容を書き換えているのですが、全角なのどの2バイト文字が入ると文字化けを起こしてしまって期待した結果になりません。
一度テキストファイルに書き出してナビゲートする分には正常に動作するのですが、ファイルに書き出さずに.DocumentTextを使用する形で解決できないでしょうか?
ファイルから読み込むとwebbrowserのエンコードの部分が日本語シフト-jisになっていますが、DocumentTextだとunicode(UTF-8)になっているのでコレが原因と考えています。
問題は DocumentText 取得時だと思います。
代わりに WebBrowser.Document の Encoding を使って WebBrowser.DocumentStream から StreamReader を作成し読み込むってのはどうでしょう。
設定時に UTF-8 になると困るのならば、上記の Encoding を使って書き込む HTML を GetBytes し、それを元に MemoryStream を作って DocumentStream に設定することになりますかね。
アクアと申します。微力ながらお手伝いいたしたく存じます。
Dim wc As New WebClient()
Dim myUri As New Uri(TextBox1.Text)
Dim st As System.IO.Stream
Dim enc As System.Text.Encoding
Dim sr As StreamReader
Dim htmltext As String
st = wc.OpenRead(myUri)
' 文字エンコードの指定
enc = System.Text.Encoding.GetEncoding("shift_jis")
' ストリームを指定した文字エンコードで読込む
sr = New StreamReader(st, enc)
htmltext = sr.ReadToEnd
' いらないものを閉じる。
st.Close()
sr.Close()
' System.Windows.Forms.WebBrowserコントロールに表示
WebBorwser1.DocumentText = htmltext
アドバイスありがとうございます。
未だに解決できません…。
説明があまりにも少なかったので補足します。
Form上にTextBoxが配置してあり、ボタンを押すとHTMLのINPUTのTextBoxにTextBoxにVB上のTextBoxの内容が入るようなHTMLを生成しています。>htmltext
それをWebBorwser1.DocumentTextに入れて表示後、ボタンを押してJavascriptを実行しそのInputBoxの内容を送信する形なのですが、
INPUTBOXに表示されてるのは[テストメッセージ]で送信すると[繝・せ繝医Γ繝・そ繝シ繧ク]という形で相手には行ってしまってる様です。
こっちでは表示されていて送ると化けてるというのを解決したいのですが、どうでしょうか?アドバイスお願いします
このhtmltextをテキストファイルに書き出し、インターネットブラウザでエンコードをShift-jisにすると正常に動作します。
DocumentTextではなくて,HtmlElementやDOMでWebページを書き換えたら
よいのではないでしょうか。
>このhtmltextをテキストファイルに書き出し、インターネットブラウザでエンコードをShift-jisにすると正常に動作します。
HTMLのほうに
<meta http-equiv="Content-Type" content="text/html; charset=shift_jis">
を付け加えてみるとか・・・
ツイート | ![]() |