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é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;
}
精彩评论