【问题标题】:How to convert currency symbol to corresponding HTML entity如何将货币符号转换为相应的 HTML 实体
【发布时间】:2017-05-01 10:28:10
【问题描述】:
System.Net.WebUtility.HtmlDecode("€"); // returns €
System.Net.WebUtility.HtmlEncode("€"); // also returns €

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

在这个例子中€ => €

我正在使用 .Net 4.6.1

【问题讨论】:

  • 我不确定我是否完全理解您想要在这里实现的目标。是否要将符号转换回 html 实体(例如本例中的 &euro)?
  • @degant,是的,问题在标题中 :) 我正在尝试找到一个函数 ConvertEveryCharacterToHtmlEntityCounterPart()
  • 如果文档编码不支持该字符,为什么不让您的 HTML 渲染器这样做呢?

标签: c# html-entities


【解决方案1】:

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
♠♣♥♦

希望这会有所帮助!

【讨论】:

    【解决方案2】:

    HtmlEncodeHtmlDecode 不是对称的。

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

    • < => <
    • > => >
    • & => &
    • ' => '
    • " => "

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

    因此不会发生转换为 HtmlEntities。

    【讨论】:

      猜你喜欢
      • 2014-08-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-07
      • 1970-01-01
      • 1970-01-01
      • 2013-10-26
      相关资源
      最近更新 更多