我覺得這很令人驚訝,而且很煩人。爲什麼HtmlEncode和HtmlDecode在.NET中不是同構的?
例子:
Decode(”) => 」
Encode(」) => 」
相關類:
.NET 4: System.Net.WebUtility
.NET 3.5: System.Web.HttpUtility
我可以理解,一個網頁可以是Unicode,但我的情況下,輸出不能UTF8。
有沒有什麼(也許是一個HtmlWriter類),可以做到這一點,而我不必重新發明輪子?
替代解決方案:
string HtmlUnicodeEncode(string input)
{
var sb = new StringBuilder();
foreach (var c in input)
{
if (c > 127)
{
sb.AppendFormat("&#x{0:X4};", (int)c);
}
else
{
sb.Append(c);
}
}
return sb.ToString();
}
這不是你在談論btw的冪。冪等性是f(f(x))= f(x)'的特性,這對於Encode(「)似乎是成立的。 –
@ R.MartinhoFernandes:謝謝,我似乎誤解了這個意思。你能想出一個更好的術語嗎?也許是「可逆的」? – leppie
我相信你期待這兩個是彼此相反的(因此他們會定義一個同構!)。 –