如何在C#中将HTML友好的ASCII代码转换为字符串?

3
我正在读取来自Web服务的数据,该数据返回的是HTML友好的ASCII代码而不是文本。我试图将其转换回字符串以供WinRT应用程序使用,但似乎找不到正确的解码器。
例如: ' 应该等于一个撇号。
我已经尝试过htmldecode和urldecode,但它们并不是我需要的。此外,我不知道我会得到什么,所以我不想硬编码任何字符。
谢谢您的帮助!

你只获取数字实体,还是也获取命名实体(例如 ' — 等)?如果你不熟悉 HTML 实体,请参考这里获取更多信息:http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Character_entity_references_in_HTML。 - Joe White
"They're not what I need"的意思是什么?预期输出是什么,实际得到的输出是什么? - Robert Harvey
"They're not what I need" 表示它们不起作用。它们只转换像 < 和 > 这样的数据类型,但不是 ASCII 代码。它们只返回与输入完全相同的内容。@JoeWhite 我也得到了命名实体。我可能需要手动处理它们,我不确定。我将发布我拥有的可以处理数字实体的代码。 - Smeegs
唉!虚惊一场。感谢您的所有帮助。我不得不运行htmldecode两次!显然在发送之前它被编码了两次。 - Smeegs
3个回答

14

引用System.Web并使用:

 HttpUtility.HtmlDecode("htmlcode");

是的,那就解决了。传入的数据实际上被编码了两次,我必须运行htmldecode两次。 - Smeegs

1

好的,我有一段处理数字实体的代码。

 Regex r = new Regex("&#[^;]+;");
 str = r.Replace(str, delegate(Match match)
 {
     string value = match.Value.ToString().Replace("&#", "").Replace(";", "");
     int asciiCode;
     if (int.TryParse(value, out asciiCode))
     {
         return Convert.ToChar(asciiCode).ToString();
     }
     else
     {
         return value;
     }                 
 });

0
如果说 HttpUtility.HtmlDecode() 没有给你所需的内容,那么你可能需要编写一个正则表达式或其他比较方法来遍历字符串,匹配 HTML代码表 中 HTML编号或HTML名称列中的值,以便将其转换为相应的符号。

谢谢你的帮助。我没有花更多时间检查传入的数据,这是我的错。它被编码了两次,所以我必须解码两次。 - Smeegs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接