2010-11-25 11 views
2

我在UTF-8 xml的元素內有一個「title」屬性,例如Xdocument - 如何轉換非html安全字符

<tag title="This is some test with special chars §£" /> 

,因爲我想這個屬性的內容,在HTML頁面直接打印,我想有一個像輸出:

<tag title="This is some test with special chars &#x00a7;&#x00a3;" /> 

的代碼片段,我添加有屬性的外觀像這樣:

new XElement("tag", 
    new XAttribute("title" , title) 
); 

等字符&和「都逃過一劫,但§£不 - 因爲他們是合法的UTF-8字符 什麼建議立即進行刪除。我改變了嗎?

回答

2

UTF-8字符的HTML支持,如果頁面被聲明爲UTF-8。

您應該始終指定用於HTML或XML頁面的編碼 。如果您的 沒有,您可能會錯誤地解釋 中的字符 。這不僅僅是人類可讀性的問題 ,越來越多的 機器也需要了解您的數據 。你還應該檢查你在 沒有在不同的地方指定不同的編碼 。

如果頁面的默認編碼是一個較小範圍的字符集,那麼它將不會正確呈現所有UTF-8字符。但是,如果文檔被聲明爲UTF-8,則它們應該顯示正常。

,而不是實體引用替換字符,you may need to explicitly declare the encoding of your page as UTF-8.

有很多種方法可以做到這一點:

  • <meta charset="UTF-8">
  • <meta http-equiv="Content-type" content="text/html;charset=UTF-8">
  • <?xml version="1.0" encoding="UTF-8"?>
+0

什麼缺點?我正在考慮IE /移動設備兼容性。另外,你會推薦哪種方式?我會選擇其中一個元標記,而不是最後一個,因爲我認爲它需要XHTML – Razor 2010-11-25 14:39:33

0

也許你可以手動解碼這些字符。我已經使用這個前

Dictionary<string, char> HTMLSymbolMap = new Dictionary<string, char>() 
     { 
      {"&#8211;",'–'}, 
      {"&#8212;",'—'}, 
      {"&#8216;",'‘'}, 
      {"&#8217;",'’'}, 
      {"&#8218;",'‚'}, 
      {"&#8220;",'「'}, 
      {"&#8221;",'」'}, 
      {"&#8226;",'•'}, 
      {"&#183;",'·'}, 
      {"&#8222;",'„'},     
      {"&#163;",'£'}, 
      {"&#167;",'§'}, 

     }; 

    public string CleanJunk(string docText) 
    { 


     foreach (var kv in HTMLSymbolMap) 
     { 
      docText = docText.Replace(kv.value.tostring(), kv.key); 
     } 

     return docText; 

    } 

請參閱本HTMLSymbol table更多信息

相關問題