System.Net.WebUtility.HtmlDecode("€"); // returns €
System.Net.WebUtility.HtmlEncode("€"); // also returns €
如何将€(或任何其他货币符号)转换为相应的html实体。
在此示例€ => €
我正在使用.Net 4.6.1
答案 0 :(得分:2)
HtmlEncode
只查找一些特殊字符并用硬编码值替换它们,另外还有一些高{ASCII}字符(160 - 255),如here所述。编码为实体名称的唯一方法是手动指定它们。我试了一下并在System.Net.WebUtility
类周围构建了一个包装器,同时利用.NET使用的现有Html实体数据集进行解码,以便解码继续使用此解决方案。我在github上托管了它:WebUtilityWrapper。您可以使用它,如下所示:
WebUtilityWrapper.HtmlEncode("€"); // Returns €
WebUtilityWrapper.HtmlEncode("Δ"); // Returns Δ
WebUtilityWrapper.HtmlEncode("&"); // Returns &
WebUtilityWrapper.HtmlEncode("$"); // Returns $
WebUtilityWrapper.HtmlEncode("€¢£¥"); // Returns €¢£¥
我通过编码和解码来测试它,然后验证我们是否获得了大量unicode字符的原始字符串。分享更多测试:
HtmlEncode()使用框架的HtmlEncode响应:(link)
// Alphabets
$+0123456789<=>ABCDEFGHIJKLMNOPQRSTUVWXYZ^`abcdefghijklmnopqrstuvwxyz|~
// Unicode 162 to 254
¢£¤¥¦§¨©ª¬®¯°
±´µ¶¸ºÀÁÂÃÄÅÆ
ÇÈÉÊËÌÍÎÏÐÑÒÓ
ÔÕÖ×ØÙÚÛÜÝÞßà
áâãäåæçèéêëìí
îïðñòóôõö÷øùú
ûüýþ
// Unicodes for Greek Alphabet
ΑΒΓΔΕΖΗΘΙΚΛΜΝ
// Unicodes for 9824 - 9830
♠♣♥♦
HtmlEncode()使用WebUtilityWrapper.HtmlEncode的响应:
// Alphabets
$+0123456789<=>ABCDEFGHIJKLMNOPQRSTUVWXYZ^`abcdefghijklmnopqrstuvwxyz|~
// Unicode 162 to 254
¢£¤¥¦§¨©ª¬®¯°
±´µ¶¸ºÀÁÂÃÄÅÆ
ÇÈÉÊËÌÍÎÏÐÑÒÓ
ÔÕÖ×ØÙÚÛÜÝÞßà
áâãäåæçèéêëìí
îïðñòóôõö÷øùú
ûüýþ
// Unicodes for Greek alphabet
ΑΒΓΔΕΖΗΘΙΚΛΜΝ
ΞΟΠΡΣΤΥΦΧΨΩ
// Unicodes for 9824 - 9830
♠♣♥♦
希望这有帮助!
答案 1 :(得分:0)
HtmlEncode
和HtmlDecode
不对称。
HtmlEncode
只会编码少数特殊字符:
<
=&gt; <
>
=&gt; >
&
=&gt; &
'
=&gt; '
"
=&gt; "
对于某些unicode字符,它会将它们转换为&#<num>;
格式。
因此不会转换为HtmlEntities。