掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
INETコントロールでテキスト形式で取得するには (ID:101907)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> objStream.WriteText bytHtml() これでは駄目ですよ。 Textモードで書き込んでしまっては、折角 UTF-8 バイナリで受け取った内容が、 VB 既定の「Shift_JIS バイナリ→UTF-16 バイナリ」変換されてしまいます。 バイナリモードで受けたのですから、書き込みもバイナリモードにせねばなりません。 > Text1.Text = objStream.ReadText() この段階で、ストリーム内のカーソル位置は、データ末尾にあります。 それ以降にデータは無いため、ReadText は空データとなります。 ReadText 前には objStream.Position = 0 を指定して、カーソル位置を先頭に戻す必要があります。 ということで、正解はこちら。 [Microsoft ActveX Data Objects X.X Library] を参照設定してください(2.5以上が必要です)。 bytHtml = Inet1.OpenURL(STRURL, icByteArray) Dim objStream As ADODB.Stream Set objStream = New ADODB.Stream objStream.Open 'バイナリモードとして書きこむ objStream.Type = adTypeBinary objStream.Write bytHtml '先頭に戻して、utf-8 なテキストモードに変更 objStream.Position = 0 objStream.Type = adTypeText objStream.Charset = "utf-8" '読み込み Text1.Text = objStream.ReadText() objStream.Close なお、ADO を参照設定せずに、CreateObject で処理したい場合には、 adTypeBinary , adTypeText の定数が未定義になりますので、 Const adTypeBinary As Long = 2 Const adTypeText As Long = 2 のように、自分で定数を定義する必要があります。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.