为什么HtmlEncode和HtmlDecode在.NET中不同构?

为什么HtmlEncode和HtmlDecode在.NET中不同构?,第1张

概述我发现这令人惊讶,而且很烦人. 例: Decode(”) => ”Encode(”) => ” 相关课程: .NET 4: System.Net.WebUtility.NET 3.5: System.Web.HttpUtility 我可以理解一个网页可以是Unicode,但我的情况是输出不能是UTF8. 有什么东西(也许是一个HtmlWriter类)可以做到这一点, 我发现这令人惊讶,而且很烦人.

例:

Decode(”) => ”Encode(”)       => ”

相关课程:

.NET 4:   System.Net.WebUtility.NET 3.5: System.Web.httpUtility

我可以理解一个网页可以是Unicode,但我的情况是输出不能是UTF8.

有什么东西(也许是一个HTMLWriter类)可以做到这一点,而我不必重新发明轮子?

替代方案:

string HTMLUnicodeEncode(string input){    var sb = new StringBuilder();    foreach (var c in input)    {        if (c > 127)        {            sb.AppendFormat("&#x{0:X4};",(int)c);        }        else        {            sb.Append(c);        }    }    return sb.ToString();}
解决方法 生成同构HTML编解码器对是不可能的.考虑:

HTMLDecode("”””””") -> ”””””

你怎么从“”“”“回到原来的字符串?

HTMLEncode必须选择一个编码为“,它适用于”作为最短,最可读的替代方案.只要您使用Unicode,这几乎肯定是最佳选择.

如果你不这样做,那就是另一个论点……& rdquo;是它比”稍微更具可读性,但它只适用于HTML(而不是XML),你仍然必须回退到所有没有内置实体名称的Unicode字符的字符引用,所以它不太一致.对于字符参考编码器,使用ASCII编码创建XmlTextWriter并在其上调用writeString.

总结

以上是内存溢出为你收集整理的为什么HtmlEncode和HtmlDecode在.NET中不同构?全部内容,希望文章能够帮你解决为什么HtmlEncode和HtmlDecode在.NET中不同构?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1082338.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存