gpt4 book ai didi

html - 如何让 PreMailer.Net 不更改非 ascii 字符的编码?

转载 作者:行者123 更新时间:2023-12-02 11:16:41 28 4
gpt4 key购买 nike

我还将我的问题发布为 Github Issue在官方 repo 。

我正在使用 PreMailer.Net将 CSS 内联到 HTML 文档中。但是,当我调用 MoveCssInline 时,它​​会编码非 ASCII 字符,例如“&”。例如:

<a href="http://www.website.com/page?param1=a&param2=b"></a>

改为:
<a href="http://www.website.com/page?param1=a&amp;param2=b"></a>

我认为这种行为仅限于 URL 和 href 值,但事实证明它也编码了innerHTML/content。例如:

此外,我进行了进一步测试,发现这种编码不仅仅针对 href 等属性进行。事实上,它也会对 text/InnerHTML 值进行编码,这些值在没有编码的情况下是绝对有效的 html。例子:
<p>&</p>

这是有效的 HTML,不应进行编码,但 PreMailer.Net 会将其更改为:
<p>&amp;</p>

有没有人对此有修复或解决方法?我无法控制 HTML 文档,并且除了内联 CSS 之外,不允许更改 URL 或内容。

最佳答案

根据您的个人需求,仅作为指南,请尝试以下操作:

        Symbols.Ampersand: temp.Append("&amp;")
Symbols.NoBreakSpace: temp.Append("&nbsp;")
Symbols.GreaterThan: temp.Append("&gt;")
Symbols.LessThan: temp.Append("&lt;")

更新:

这些行来自行 132-139名为 AngleSharp 的 PreMailer.Net 依赖项,这是一个 HTML 解析器。

目前,据我所知,编码在 AngleSharp 上是强制性的,因此在 AngleSharp 或 PreMailer.Net 中的任何设置都无法避免。

根据以下 closed issue ,这是按照 HTML 规范设计的。但是,我相信仍然存在一个错误,因为它应该只编码属性值,而不是 innerHTML 内容。此外,我认为对于 CSS 内联程序来说,这是 Not Acceptable 行为,它不应该验证或清理 HTML。此外,我什至认为解析器不应该进行客户端不要求的更改。

关于html - 如何让 PreMailer.Net 不更改非 ascii 字符的编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60349015/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com