【问题标题】:Why is “ not showing up as a quote on my web page?为什么“没有在我的网页上显示为引用?
【发布时间】:2013-04-10 20:41:49
【问题描述】:

其他 ASCII 码也在做同样的事情。

只是为了给您一些背景知识,这些代码是我从 WordPress 博客文章中阅读的 HTML 的一部分。我正在使用我编写的一个小 C# WinForm 应用程序将它们移植到 BlogEngine.NET。在将它们移植到 BlogEngine.NET(作为 XML 文件)时,是否需要进行某种转换?

如果它们在我没有任何干预的情况下正确显示,那就太好了。

这是来自 WordPress 源页面之一的代码片段:

<link rel="alternate" type="application/rss+xml" title="INRIX® Traffic &raquo; Taking the &#8220;E&#8221; out of your &#8220;ETA&#8221; Comments Feed" href="http://www.inrixtraffic.com/blog/2012/taking-the-e-out-of-your-eta/feed/" />

这是我在转换过程中输出的 XML 文件中对应的 XML 块:

<title>Taking the &amp;#8220;E&amp;#8221; out of your &amp;#8220;ETA&amp;#8221;</title>

更新。

试过了,还是没有骰子。

writer.WriteElementString("title", string.Format("<![CDATA[{0}]]>", post.Title));

...输出这个:

<title>&lt;![CDATA[Taking the &amp;#8220;E&amp;#8221; out of your &amp;#8220;ETA&amp;#8221;]]&gt;</title>

【问题讨论】:

  • 有什么理由不使用等效的 html 转义字符吗?
  • 你能给我们一些示例 HTML 吗?你确定&amp;amp; 没有被编码成&amp;amp;,因此在浏览器中显示为&amp;#8220;?
  • 他们可能是在那个阶段使用发生的编码编写的。对于具有与输入法不同的字符集的数据库,我在读取其他 CMS 时遇到了类似的问题。一定要发布一些 HTML。
  • 我想你可能会有所收获,@Steve。我该如何处理?
  • 你想让它编码两次?

标签: html wordpress ascii blogengine.net


【解决方案1】:

由于您从 Wordpress 获取的数据已经编码,您可以将其解码为常规字符串,然后让 XMLWriter 为 XML 正确编码。

string input = "Taking the &#8220;E&#8221; out of your &#8220;ETA&#8221;";
string decoded = System.Net.WebUtility.HtmlDecode(input);
//decoded = Taking the "E" out of your "ETA"

这可能不是很有效,但由于这听起来像是一次性转换,我认为这将是一个问题。

这里提出了类似的问题:How can I decode HTML characters in C#?

【讨论】:

  • 太棒了!谢谢!你在所有方面都是对的。一次,所以效率并不重要。完美运行!
【解决方案2】:

正如我在上面的评论中指出的那样:您的问题是您的 &amp;#220; 被编码为 &amp;amp;8220;。当你在浏览器中输出它时,它显示为&amp;#220;

我不知道你的移植是如何工作的,但要解决这个问题,你需要确保 ASCII 代码中的 &amp;amp; 没有被编码为 &amp;amp;

【讨论】:

  • 当我从 WordPress 页面读取 HTML 时,类似于 ’实际上被存储到一个字符串中。然后,我使用 XMLWriter 和 WriteElementString() 将其写出来。你知道我可以如何禁用它认为对我有用的任何“好处”吗?
  • 您可能想看看这个 SO 问题:stackoverflow.com/questions/2176843/…
  • 这很有趣。我只是看着那个。不过,似乎仍然没有给我一个解决方案。我尝试调整 XmlWriter 的几个设置(编码和 CheckCharacters),但它一直输出相同的东西。而且 WriteRaw 不允许我指定 XML 元素名称。
  • 我没有。我会试一试。
  • 试过 CDATA。没有骰子。也许我做错了。我把它贴在最上面的原始问题中。
【解决方案3】:

CDATA 标签能否解决问题?只需确保源 XML 文件中的文本正确无误。如果您使用 CDATA 标签,则不需要 & 符魔法(在源代码中)。

<some_tag><![CDATA[Taking the “ out of your ...]]></some_tag>

【讨论】:

  • 这就是问题所在;源 XML 中的源不正确。这就是我需要解决的问题。
  • 啊哈,在 PHP 中你有一个函数 html_entity_decode(与 htmlentities 相反)。
猜你喜欢
  • 1970-01-01
  • 2013-02-25
  • 2014-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多