某些字符的HttpUtility.HtmlDecode()失败

时间:2014-07-27 00:35:52

标签: c# string unicode character-encoding character-entities

请参阅此代码:

namespace TestHtmlDecode
{
    using Microsoft.VisualStudio.TestTools.UnitTesting;
    using System.Web;

    [TestClass]
    public class TestHtmlDecode
    {
        private string Convert(string input)
        {
            return HttpUtility.HtmlDecode(input);
        }

        [TestMethod]
        public void TestLeftBrace()
        {
            Assert.AreEqual("{", Convert("{"));
        }

        [TestMethod]
        public void TestGreaterThan()
        {
            Assert.AreEqual(">", Convert(">"));
        }
    }
}

TestGreaterThan次通过,但TestLeftBrace失败(Convert返回{)。这是为什么?

1 个答案:

答案 0 :(得分:3)

看起来这里有两件事。

  1. &lbrace是{而不是[(http://jsfiddle.net/B7AAh/1/

  2. 看起来&lbrace已包含在已知项目列表中。源代码在此http://referencesource.microsoft.com/#System/net/System/Net/WebUtility.cs,其中引用了此处找到的实体列表http://www.w3.org/TR/REC-html40/sgml/entities.html