2010-10-22 79 views
2

我有一個在web瀏覽器中的編碼的字符,如€  ... 形式顯示效果細膩人物的名單,但發佈到服務器,這些人物時,我意識到,HttpUtility更大。 HtmlDecode不能像瀏覽器那樣將它們轉換爲字符,它們都變成了空間。HttpUtility.HtmlDecode不能解碼ASCII超過127

text = System.Web.HttpUtility.HtmlDecode("€"); 

我希望它返回€,但它返回的空間,而不是。同樣的事情也發生在其他人物身上。

有誰知道如何解決這個或任何解決方法?

+3

ASCII只到127 ....你想ANSI的可能? – leppie 2010-10-22 10:48:37

+0

你可以在這裏找到它http://msdn.microsoft.com/en-us/library/9hxt0028%28v=vs.71%29.aspx – thethanghn 2010-10-23 02:31:28

回答

1

這是通常使用文字值和混合UTF-8和ASCII的結果。在UTF-8歐元符號編碼爲3個字節,所以沒有ASCII對應的。如果您使用的是UTF-8,因爲它僅支持前128個字符,其餘被編碼爲多個字節

更新

你的代碼是非法的。您需要使用Unicode語法:

// !!! NOT HtmlDecode!!! 
    text = System.Web.HttpUtility.UrlDecode("%E2%82%AC"); 

UPDATE

OK,我已經離開了代碼,因爲它是,但添加的註釋,這是行不通的。它不起作用,因爲它不是HTML所關心的編碼 - 它不是HTML。這是該URL的關注,因此您需要使用UrlDecode來代替。

+0

我試過你的代碼,但它沒有奏效。此外,我需要一種方式來編碼€像一個有意義的信。我無法將€轉換爲%E2%82%AC來解碼它 – thethanghn 2010-10-23 02:28:12

+0

查看我的更新。你需要使用UrlDecode。 – Aliostad 2010-10-23 11:04:35

0

ASCII是7位;沒有字符128到255.你鏈接的MSDN文章遵循假裝ASCII的長期傳統是8位;該文章實際上顯示了code page 437

我不知道你爲什麼不簡單地寫€(兼容性?),但€€should do, too

+0

我收到客戶的€,他想將其顯示爲歐元符號 – thethanghn 2010-10-27 11:00:42

0

您通常想要做的事,如:

string html = "€" 
string trash = WebUtility.HtmlDecode(html); 
//Convert from default encoding to UTF8 
byte[] bytes = Encoding.Default.GetBytes(trash); 
string proper = Encoding.UTF8.GetString(bytes); 
相關問題