C#将ISO-8859-1字符转换为实体编号

时间:2010-11-25 14:59:29

标签: c# encode iso-8859-1

我似乎无法弄清楚如何将ISO-8859-1字符(例如é)转换为é的实体编号。

我希望能够取一个字符串,例如:“SteelDécor”

并将其转换为:“Steel D é cor”

3 个答案:

答案 0 :(得分:3)

假设您不关心HTML中特殊的HTML编码字符(例如,<,&等),则对字符串的简单循环将起作用:

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écor"

if语句可能需要更改为也可以转义字符< 0x20或非字母数字等,具体取决于您的具体需求。

答案 1 :(得分:1)

HttpUtility.HtmlEncode就是这么做的。它驻留在System.Web.dll中,但不适用于.NET 4 Client Profile。

答案 2 :(得分:1)

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