2010-12-22 16 views
1

在以下示例中,我從服務器獲取響應; 但是我需要設置ASCII或UTF8編碼類型嗎?在.NET中,當我從服務器獲取響應流時,應該使用哪種類型的編碼類型?

Dim objURI As Uri = New Uri(URL) 
Dim wReq As WebRequest = WebRequest.Create(objURI) 
Dim wResp As WebResponse = wReq.GetResponse() 
Dim respStream As Stream = wResp.GetResponseStream() 
Dim reader As StreamReader = New StreamReader(respStream, Encoding.ASCII) 
Dim respHTML As String = reader.ReadToEnd() 
wResp.Close() 

回答

1

這真的取決於編碼的Web服務器什麼是發送的響應

docs狀態:

字符編碼由 編碼參數設置,並且緩衝 大小設置爲1024字節。通過查看流的第一個 三個字節,StreamReader對象嘗試檢測 編碼。它 自動識別UTF-8, 小端Unicode和大端 Unicode文本如果文件以 合適的字節順序標記開始。

對我來說似乎應該是安全的,只是讓運行時識別編碼。

1

這取決於您對服務器的期望。就HTML而言(這似乎是你的期望),ASCII可以在99%的時間內處理英文頁面,並且應該允許你解碼所有的HTML元素。但是,您應該做的第一件事情之一是讀取文檔頭元素中的任何「meta」標籤;這些將指定正文中文本的編碼。通常情況下,如果不是ASCII碼,它就是UTF-8,它向後兼容ASCII(但會顯示2字節和4字節字符代碼的奇怪字符)。

相關問題