6
  • どの文字エンコードが使用されていStreamReader.ReadToEnd()ますか?
  • 以下の(a)の代わりに(b)を使用する理由は何ですか?
  • (b)の代わりに(a)を使用すると、文字エンコードの問題になるリスクはありますか?
  • (a)と(b)よりも優れた別の方法はありますか?

(a)

Dim strWebResponse As String
Dim Request As HttpWebRequest = WebRequest.Create(Url)
Using Response As WebResponse = smsRequest.GetResponse()
    Using reader As StreamReader = New StreamReader(Response.GetResponseStream())
        strWebResponse = reader.ReadToEnd()
    End Using
End Using

(b)

Dim encoding As New UTF8Encoding()
Dim strWebResponse As String
Dim Request As HttpWebRequest = WebRequest.Create(Url)
Using Response As WebResponse = Request.GetResponse()
    Dim responseBuffer(Response.ContentLength - 1) As Byte
    Response.GetResponseStream().Read(responseBuffer, 0, Response.ContentLength - 1)
    strWebResponse = encoding.GetString(responseBuffer)
End Using
4

3 に答える 3

13

で使用される標準のエンコーディングStreamReaderEncoding.Defaultです。これは、Windowsのバージョンと設定したロケールに応じて、マシンごとに異なります。 Encoding.UTF8

デフォルトが何であるかを思い出すのに苦労しているのでStreamReader、エンコーディングを指定できるコンストラクターを使用することを好みます。例えば:

Using reader As StreamReader = New StreamReader(Response.GetResponseStream(), Encoding.UTF8)

詳細については、コンストラクターのドキュメントを参照してください。

例aでそのコンストラクターを使用すると、結果は例bの場合と同じになります。

UTF-8を使用する必要がありますか?ダウンロードするページによって異なります。ダウンロードしているページがUTF-8でエンコードされている場合は、はい、UTF-8を使用する必要があります。HTTPヘッダーで文字セットが定義されていない場合、UTF-8がデフォルトであると想定されます。Content-Typeただし、ページが他のエンコーディングを使用しているかどうかを判断するには、ヘッダーを確認する必要があります。たとえば、Content-Typeヘッダーは次のようになります。

 application/xml; charset=ISO-8859-2

のContentTypeプロパティを調べHttpWebResponse、フィールドがあるかどうかを確認し、それにcharset基づいてエンコーディングを適切に設定する必要があります。

または、UTF-8を使用して、最高のものを期待してください。

于 2012-11-12T04:44:55.530 に答える
0

はいbはUTF-8 will work with any ASCII document
UTF8がであるため良いですUnicode encoding type
さらに重要なのはbackwards compatible with ASCIIstandard default for XML and HTML

于 2012-11-12T04:33:33.200 に答える
0

私は解決策を見つけました、それはきれいではありませんが、それは機能します。
まず、StreamReaderをDetectEncodingにtrueに設定する必要があります。
次に、ページに特殊文字を配置します。

StreamReaderリーダー=newStreamReader(responseStream、System.Text.Encoding.Default、true);

<%@ Page Title="FTP-Verificação"Language= "C#"

于 2014-01-27T12:02:34.017 に答える