如何将货币符号转换为相应的HTML实体

时间:2017-05-01 10:28:10

标签: c# html-entities

System.Net.WebUtility.HtmlDecode("€"); // returns €
System.Net.WebUtility.HtmlEncode("€"); // also returns €

如何将€(或任何其他货币符号)转换为相应的html实体。

在此示例€ => €

我正在使用.Net 4.6.1

2 个答案:

答案 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)

HtmlEncodeHtmlDecode不对称。

HtmlEncode只会编码少数特殊字符:

  • < =&gt; &lt;
  • > =&gt; &gt;
  • & =&gt; &amp;
  • ' =&gt; &#39;
  • " =&gt; &quot;

对于某些unicode字符,它会将它们转换为&#<num>;格式。

因此不会转换为HtmlEntities。