解码HTML实体

时间:2013-12-27 18:18:52

标签: c# html-entities

我有一个像Fee&#108这样的字符串,我希望将其解码为ascii表示形式 - feel
C#中有没有这样的库,或者我必须手动完成它?

3 个答案:

答案 0 :(得分:3)

要解码字符串,请使用WebUtility.HtmlDecode

以下是一个示例LINQPad示例:

void Main()
{
    string s = "Feel";
    string decoded = WebUtility.HtmlDecode(s);
    decoded.Dump();
}

输出:

Feel

注意:您在问题中提供的字符串中缺少分号。没有最后的分号,输出将是:

Fee&#108

答案 1 :(得分:1)

您可以使用以下代码,这是一个控制台示例:

using System;
using System.Text;
using System.Text.RegularExpressions;

namespace ConsoleApplication
{
    class Program
    {
        public static String ReplaceASCIICodesWithUTF(String target)
        {
            Regex codeSequence = new Regex(@"&#[0-9]{1,3};");
            MatchCollection matches = codeSequence.Matches(target);
            StringBuilder resultStringBuilder = new StringBuilder(target);
            foreach (Match match in matches)
            {
                String matchedCodeExpression = match.Value;
                String matchedCode = matchedCodeExpression.Substring(2, matchedCodeExpression.Length - 3);
                Byte resultCode = Byte.Parse(matchedCode);
                resultStringBuilder.Replace(matchedCodeExpression, ((Char)resultCode).ToString());
            }
            return resultStringBuilder.ToString();
        }

        static void Main(string[] args)
        {
            String rawData = "Feel";
            Console.WriteLine(ReplaceASCIICodesWithUTF(rawData));
        }
    }
}

答案 2 :(得分:0)

解码:

HttpUtility.HtmlDecode

然后,例如,

ASCIIEncoding

GetBytes/GetString(对已解码的字符串进行getbytes,然后从这些字节中获取字符串)