我正在從web服務讀取數據,它返回html友好的ascii代碼而不是文本。我試圖將它轉換爲一個WinRT應用程序的字符串,但我似乎無法找到正確的解碼器。如何將html友好的ascii代碼轉換爲c#中的字符串?
例如:
'
應等於一個撇號。
我已經嘗試過htmldecode和urldecode,但它們不是我所需要的。此外,我不知道我會回來,所以我不想硬編碼任何字符。
感謝您的幫助!
我正在從web服務讀取數據,它返回html友好的ascii代碼而不是文本。我試圖將它轉換爲一個WinRT應用程序的字符串,但我似乎無法找到正確的解碼器。如何將html友好的ascii代碼轉換爲c#中的字符串?
例如:
'
應等於一個撇號。
我已經嘗試過htmldecode和urldecode,但它們不是我所需要的。此外,我不知道我會回來,所以我不想硬編碼任何字符。
感謝您的幫助!
參考的System.Web和使用:
HttpUtility.HtmlDecode("htmlcode");
是這樣做的。傳入的數據實際上被編碼了兩次,我不得不運行兩次htmldecode。 – Smeegs 2012-07-29 16:15:09
如果你說HttpUtility.HtmlDecode()
沒有給你你需要的東西,你可能需要編寫一個正則表達式或其他比較來遍歷你的字符串,匹配the HTML Codes table中的HTML編號或HTML名稱列的值,這樣你就可以將其轉換爲相應的符號。
感謝您的幫助。不花費更多時間檢查輸入數據是我的錯。它被編碼了兩次,所以我不得不解碼兩次。 – Smeegs 2012-07-29 16:18:08
好了,我這有一些代碼來處理數字實體。
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;
}
});
你只能得到數字實體,或者你還可以得到命名實體(例如''',' ',''—等)?如果您不熟悉HTML實體,請點擊此處瞭解更多信息:http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references#Character_entity_references_in_HTML – 2012-07-29 15:52:47
「他們不是我需要的」意思是什麼?預期產出是多少?實際得到的產出是多少? – 2012-07-29 15:57:22
「他們不是我需要的」意味着他們不工作。它們僅轉換諸如<和&lgt;類型數據。但不是ascii代碼。他們只是返回完全相同的東西。 @JoeWhite我也得到命名實體。我可能不得不手動處理這些,我不確定。 我將發佈我對數字實體有效的代碼。 – Smeegs 2012-07-29 16:04:31