我似乎无法弄清楚如何将ISO-8859-1字符(例如é)转换为é
的实体编号。
我希望能够取一个字符串,例如:“SteelDécor”
并将其转换为:“Steel D é
cor”
答案 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;
}