2010-11-25 4 views

ответ

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&#233;cor" 

В if заявление может потребоваться изменить также на escape-символы < 0x20, или не буквенно-цифровые и т. д., в зависимости от ваших конкретных потребностей.

1

HttpUtility.HtmlEncode делает этого. Он находится в System.Web.dll, хотя, например, не будет работать с .NET Client Profile.

+1

Это делает и не делает. Он кодирует строку, но не в текстовом формате, который я ищу. Это было первое, что я пробовал. Я также не работаю с веб-материалами. – tracstarr 2010-11-25 18:37:37

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