- ベストアンサー
vb2008で文字列から文字列コードを取得する方法
- vb2008で文字列から文字列コードを取得する方法について説明します。
- 文字列をバイト配列に変換する際に必要な文字コードについて考えます。
- 文字列から文字コードを判別する方法についてお伝えします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
#1 Wizard_Zeroです。すみません、ちゃんとテストしないで投稿してしまいました。 以下、修正したコードです。 srmBuffの内容を全てメモリストリームへコピーしてバイト配列を得るようにしました。 Dim client As New Net.WebClient Dim srmBuff As IO.Stream = client.OpenRead("http://hoge") Dim bytBuff As Byte() = {} Using srmMemory As New IO.MemoryStream Dim bytRead As Byte() = {}, intRead As Integer = 0 Call Array.Resize(bytRead, 1024) intRead = srmBuff.Read(bytRead, 0, bytRead.Length) Do While intRead > 0 Call srmMemory.Write(bytRead, 0, intRead) intRead = srmBuff.Read(bytRead, 0, bytRead.Length) Loop bytBuff = srmMemory.ToArray End Using
その他の回答 (1)
- うぃず(@Wizard_Zero)
- ベストアンサー率69% (344/495)
StreamReaderではなく、IO.Streamから直接バイト配列で読んでしまえばOKです。 Dim client As New Net.WebClient Dim srmBuff As IO.Stream = client.OpenRead("http://hoge") Dim bytBuff As Byte() = {} Array.Resize(bytBuff, CInt(srmBuff.Length)) srmBuff.Read(bytBuff, 0, bytBuff.Length) このようにすればアクセスしたWebサイトのHTMLをバイト配列で取得することができます。
補足
回答ありがとうございます。 Wizard_Zeroさんのご指摘の通り、 1)byteで読み込む 2)エンコードをチェックする 3)文字列に変換する という流れが良さそうです。 コードを利用させていただきましたが、srmBuff.Lengthのところで、 "このストリームはシーク操作をサポートしません。" というエラーが発生してしまいます。 google検索してもヒット1件だけで、解決策を導き出せませんでした。 解決策がありましたら、よろしくお願いします。
お礼
回答ありがとうございます。 見事に処理することができました。 とても勉強になりました。 ありがとうございます。