首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

C# WebBrowser.DocumentText 雙引號轉義:正確處理 HTML 字符串

     編輯:程式設計綜合問答

問題場景

動態構建 HTML 字符串賦值給 `webBrowser1.DocumentText`,字符串內部包含雙引號(如屬性值),導致字符串截斷或解析錯誤。

錯誤示例

// 錯誤:內部雙引號與外層字符串邊界衝突
string html = "<div class=\"box\">內容</div>";
webBrowser1.DocumentText = html;

解決方案一:HTML 實體編碼(推薦)

將雙引號替換為 `&quot;`,瀏覽器渲染時自動還原。

string rawHtml = "<div class=\"box\">內容</div>";
string safeHtml = rawHtml.Replace("\"", "&quot;");
webBrowser1.DocumentText = safeHtml;

解決方案二:使用 HtmlTextWriter 統一轉義

框架級方法,自動處理所有特殊字符(`<` `>` `&` `"` `'`)。

using System.IO;
using System.Web.UI;

public string EncodeHtml(string input) {
    using (var sw = new StringWriter())
    using (var writer = new HtmlTextWriter(sw)) {
        writer.WriteEncodedText(input);
        return sw.ToString();
    }
}

// 使用
string encoded = EncodeHtml("公式\" a > b \"");
webBrowser1.DocumentText = $"\"{encoded}\""; // 結果: "公式&quot; a &gt; b &quot;"

最佳實踐建議

  • 優先使用模板引擎或 `HtmlAgilityPack` 構建 DOM,避免手工拼接字符串。
  • 若數據源自 DataGridView 等控件,遍歷行構建對象模型再序列化為 HTML。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved