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

偶尔善良 提交于 2019-12-06 09:33:58

问题


I can't seem to figure out how to convert ISO-8859-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"


回答1:


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.




回答2:


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




回答3:


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;
}


来源:https://stackoverflow.com/questions/4278371/c-sharp-convert-iso-8859-1-characters-to-entity-number

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!