2010-11-25 36 views

Répondre

3

En supposant que vous ne se soucient pas des caractères de codage HTML qui sont spéciaux en HTML (par exemple, <, &, etc.), une simple boucle sur la chaîne fonctionnera:

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" 

La déclaration if peut avoir besoin d'être changé pour également échapper caractères < 0x20, ou non-alphanumérique, etc., en fonction de vos besoins exacts.

1

HttpUtility.HtmlEncode fait cela. Il réside dans System.Web.dll mais ne fonctionnera pas avec .NET 4 Client Profile par exemple.

+1

Il fait et il ne fonctionne pas. Il encode la chaîne, mais pas dans le format de texte que je cherche. C'était la première chose que j'ai essayé. Je ne travaille pas non plus avec des trucs sur le web. – tracstarr

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