开发者

C# convert ISO-8859-1 characters to entity number

I can't seem to figure out how to convert ISO-88开发者_Python百科59-1 characters, such as é, to it's entity number being é.

I want to be able to take a string, such as: "Steel Décor"

and have it converted to: "Steel Décor"


Assuming you don't care about HTML-encoding characters that are special in HTML (e.g., <, &, etc.), a simple loop over the string will work:

string input = "Steel Décor";
StringBuilder output = new StringBuilder();
foreach (char ch in input)
{
    if (ch > 0x7F)
        output.AppendFormat("&#{0};", (int) ch);
    else
        output.Append(ch);
}
// output.ToString() == "Steel D&#233;cor"

The if statement may need to be changed to also escape characters < 0x20, or non-alphanumeric, etc., depending on your exact needs.


HttpUtility.HtmlEncode does that. It resides in System.Web.dll though so won't work with .NET 4 Client Profile for example.


using LINQ

string toDec(string input)
{
    Dictionary<string, char> resDec =
        (from p in input.ToCharArray() where p > 127 select p).Distinct().ToDictionary(
            p => String.Format(@"&#x{0:D};", (ushort)p));

    foreach (KeyValuePair<string, char> pair in resDec)
        input = input.Replace(pair.Value.ToString(), pair.Key);
    return input;
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜