2013-04-10 117 views
0

其他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文件I輸出:

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

UPDATE。

試過這個,但仍然沒有骰子。

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> 
+1

有什麼理由不使用等效HTML轉義字符? – 2013-04-10 20:45:01

+0

你可以給我們一些示例HTML嗎?你確定'&'沒有被編碼成'&',因此在瀏覽器中顯示爲'“'? – Steve 2013-04-10 20:45:08

+0

他們可能會寫在該階段發生的編碼。對於具有與輸入方法不同的字符集的數據庫,其他CMS讀取時遇到類似的問題。絕對張貼一些HTML。 – 2013-04-10 20:50:10

回答

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#?

+0

太棒了!謝謝!你是對的。有一次,效率並不重要。完美的作品! – birdus 2013-04-11 21:14:51

0

正如我上面我的評論中指出:你的問題是,你的&#220;被編碼爲&amp;8220;。當你在它顯示爲&#220;

我不知道該怎麼你的移植作品,但要解決這個問題,你需要確保在ASCII碼&不會被編碼爲&amp;瀏覽器輸出這

+0

當我從WordPress頁面讀取HTML時,實際上將’存儲到一個字符串中。然後,我使用XMLWriter和WriteElementString()寫出了它。你知道我該如何禁用它認爲它在做我的任何「優惠」? – birdus 2013-04-10 20:59:35

+0

你可能想看看這個SO問題:http://stackoverflow.com/questions/2176843/how-to-prevent-the-conversion-of-to-amp-using-xmltextwriter – Steve 2013-04-10 21:04:56

+0

這很有趣。我只是看着那個。儘管如此,我仍然沒有給出解決方案。我試過調整XmlWriter的幾個設置(Encoding和CheckCharacters),但它不斷輸出相同的東西。 WriteRaw不會讓我指定XML元素名稱。 – birdus 2013-04-10 21:25:06

0

任何機會CDATA標籤解決了這個問題?只要確保源XML文件中的文本是正確的。如果您使用CDATA標籤,則不需要符號魔術(在源代碼中)。

<some_tag><![CDATA[Taking the 「 out of your ...]]></some_tag> 
+0

這就是問題;源XML在源XML中不正確。這就是我需要解決的問題。 – birdus 2013-04-10 21:01:04

+0

Aha,在PHP中你有一個函數html_entity_decode(與htmlentities相反)。 – 2013-04-10 21:25:01

相關問題