2009-12-22 123 views
2

我有一個字符串,它看起來像:c#編碼轉換?

À l'intérieur 

但它需要:

À l'intérieur 

我試圖改變的轉換。我知道它是作爲ASCII編碼讀取的。所以我嘗試使用的代碼:

 ASCIIEncoding ASCII = new System.Text.ASCIIEncoding(); 
     Byte[] BytesMessage = ASCII.GetBytes(Title); 
     Title = Encoding.UTF8.GetString(BytesMessage); 

我試着在不同的編碼之間切換,但它沒有多大幫助。 有沒有辦法解決這個問題?

Thx!

+1

這兩個字符串有什麼區別? – 2009-12-22 14:22:51

+0

這兩個字符串之間沒有什麼不同...... – 2009-12-22 14:23:08

+0

我已經編輯過,markdown + html正在提供答案 – 2009-12-22 14:25:25

回答

3

要轉碼這樣的HTML編碼字符串,請使用System.Web.HttpUtility.HtmlDecode(Title)。如果這不是Web應用程序,則需要引用System.Web

+0

非常感謝!這是我需要的。對於其他人,確切地說。這是HttpUtility.HtmlDecode(標題)。 – WtFudgE 2009-12-22 15:06:38

+0

哎呀!感謝那。 – 2009-12-22 21:55:28

6

那麼,這其實不是字符編碼(如ASCII或UTF-8),而是一個更高級別的協議定義用於任意字符,在本例的轉義序列SGML其用作HTML和基礎XML。

可以使用HttpUtility類的HtmlDecode方法對其進行解碼:

PS> Add-Type -AssemblyName system.web 
PS> [web.httputility]::HtmlDecode("À l'intérieur") 
À l'intérieur 

然而,這個類位於System.Web命名空間因此它可能在non-ASP.NET項目不能立即獲得。

+0

嗚呼! PowerShell示例爲+1。 – 2009-12-22 21:56:06

+0

這是在.NET中測試某些東西時最簡單的方法,而不實際啓動Visual Studio,打開幾十個ConsoleProject1解決方案之一等等。:-) – Joey 2009-12-23 00:11:32