DOBON.NETプログラミング道掲示板
(現在 過去ログ5 を表示中)

[ 最新記事及び返信フォームをトピックトップへ ]

■34914 / inTopicNo.1)  WebView2のEncodeの問題?
  
□投稿者/ Wan 一般人(33回)-(2021/09/16(Thu) 20:20:14)
  • アイコン環境/言語:[Windows10 VisualStudio2019 VB.net WindowsForm] 
    分類:[.NET] 

    WebView2で、YahooのHPを表示させ、
    Dim html As String = Await myWebView2.ExecuteScriptAsync("document.documentElement.outerHTML")
    で、Htmlを取得すると、次のようなHtml文が取得できました。
    \u003Chtml lang=\"ja\">\u003Chead>\u003Cmeta charset=\"utf-8\">
    \u003Cmeta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\">
    \u003Ctitle>Yahoo! JAPAN\u003C/title>
    \u003Cmeta name=\"description\" content=\"あなたの毎日をアップデートする情報ポータル。検索、ニュース、天気、スポーツ、メール、ショッピング、オークションなど便利なサービスを展開しています。\">
    Dim html2 As String = html.Replace("\u003C", "<")を実行すると、次のように正しく表示されます。
    <html lang=\"ja\"><head><meta charset=\"utf-8\">
    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\">
    <title>Yahoo! JAPAN</title>
    <meta name=\"description\" content=\"あなたの毎日をアップデートする情報ポータル。検索、ニュース、天気、スポーツ、メール、ショッピング、オークションなど便利なサービスを展開しています。\">
    WebView2の何を設定すれば、正しいHtml文を取得することが可能か判る方いらっしゃいますでしょうか?Encodeの問題でしょうか?
    
    宜しくお願い致します。
    

引用返信 削除キー/
■34915 / inTopicNo.2)  Re[1]: WebView2のEncodeの問題?
□投稿者/ Hongliang 大御所(607回)-(2021/09/16(Thu) 20:36:33)
  • アイコンExecuteScriptAsyncメソッドの返値は、常にJSON文字列になります。String型であっても。
    何らかの方法でJSONデコードしてください。
    .NET Core 3や.NET 5であれば標準でSystem.Text.Json.JsonSerializerクラスが使えます。
    .NET Frameworkであれば、NuGetでNewtonsoft.JsonやSystem.Text.Jsonなどをインストールするのがいいでしょう。
引用返信 削除キー/
■34916 / inTopicNo.3)  Re[1]: WebView2のEncodeの問題?
□投稿者/ 魔界の仮面弁士 大御所(1399回)-(2021/09/16(Thu) 20:51:37)
  • アイコンNo34914に返信(Wanさんの記事)

    TextBox1.Text = Await myWebView2.ExecuteScriptAsync("document.documentElement.outerHTML")
    TextBox2.Text = System.Text.RegularExpressions.Regex.Unescape(TextBox1.Text)
    TextBox3.Text = Newtonsoft.Json.JsonConvert.DeserializeObject(Of String)(TextBox1.Text)
引用返信 削除キー/
■34917 / inTopicNo.4)  Re[2]: WebView2のEncodeの問題?
□投稿者/ Wan 一般人(34回)-(2021/09/17(Fri) 08:22:27)
  • アイコンHongliangさん
    魔界の仮面弁士さん
    早速のご指南有難う御座います。

    ネットでググっていてJSONという単語にであっていたのですが、全く気にとめていませんでした。JavaScriptと相性が良いデータ構造とのことで、勉強してみます。
    YahooのHPにアクセスして、魔界の仮面弁士さんに書いて頂いたコードをコピペすると次のようなエラーが発生しました。
    Newtonsoft.Json.JsonReaderException: 'Additional text encountered after finished reading JSON content: j. Path '', line 1, position 13.'
    UriをGooに変更しても全く同じです。
    どうして、エラーが出すのでしょうか?色々ググってみても、日本語の解説が出て来ず困っています。
    追加のご指導って可能でしょうか?

引用返信 削除キー/
■34919 / inTopicNo.5)  Re[3]: WebView2のEncodeの問題?
□投稿者/ Hongliang 大御所(608回)-(2021/09/17(Fri) 09:56:51)
  • アイコンRegex.Unescapeした文字列に対してJsonConvert.DeserializeObjectしていませんか?
    魔界の仮面弁士さんのコードをよくご確認ください。DeserializeObjectの引数はTextBox1.TextであってTextBox2.Textではありません。
    つまり方法1:Regex.Unescape、方法2:JsonConvert.DeserializeObject、と解決方法を2つ提示されているのですね。
引用返信 削除キー/
■34921 / inTopicNo.6)  Re[4]: WebView2のEncodeの問題?
□投稿者/ Wan 一般人(36回)-(2021/09/17(Fri) 21:20:29)
  • アイコン一言で言うと、恥ずかしい!
    ご指摘の通りです。
    TextBox2.Text = System.Text.RegularExpressions.Regex.Unescape(TextBox1.Text)
    の結果で、期待する結果が得られているのに、何故?さらに?
    TextBox3.Text = Newtonsoft.Json.JsonConvert.DeserializeObject(Of String)(TextBox1.Text)
    をするのか?物凄く悩んでいました。
    エラーの内容を、ググっては?はて?

    恥ずかしい限りです。
    有難う御座いました。

解決み!
引用返信 削除キー/



トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

Mode/  Pass/


- Child Tree -