XMLHTTP-und Sonderzeichen (z.B. Umlaute)
Ich bin mit Microsoft.XMLHTTP über VBA zu ziehen, die in den Körper einer web-Seite. Dabei werden Zeichen wie é ersetzt mit "?" oder etwas ähnlich nicht sinnvoll.
Hier ist der basic-code:
Set objHTTP = CreateObject("Microsoft.XMLHTTP")
objHTTP.Open "GET", ThisWebPage, False
objHTTP.setRequestHeader "Content-Type", _
"application/x-www-form-urlencoded; charset=UTF-8"
objHTTP.Send ("")
strResponse = objHTTP.responseText
Gibt es eine Möglichkeit zum abrufen der Seite mit den Sonderzeichen intakt?
Hinweis:
Ich habe auch versucht, mit Hilfe dieses Anfrage-header, aber ohne Erfolg:
objHTTP.setRequestHeader "Content-Type", "content=text/html; charset=iso-8859-1"
Vielen Dank im Voraus.
Lösung
Danke an Ben.Weinberg (und einige oberflächliche Googeln), ich bin in der Lage, ziehen Sie akzentuierte Zeichen mit dem folgenden code:
' Create the XMLHTTP object
Set objHTTP = CreateObject("Microsoft.XMLHTTP")
' Send the request
objHTTP.Open "GET", WhatWebPage, False
objHTTP.Send ("")
Dim BinaryStream
Set BinaryStream = CreateObject("ADODB.Stream")
With BinaryStream
.Type = adTypeBinary
.Open
.Write objHTTP.ResponseBody
'Change stream type To binary
.Position = 0
.Type = adTypeText
'Specify charset For the source text (unicode) data.
.Charset = "iso-8859-1"
'Open the stream And get binary data from the object
strResponse = .ReadText
End With
- Wenn Sie (zB) Spielmann, versuchen Sie einen Blick in den response-header(s) und sehen, was da ist. Fiddler zeigt Ihnen auch die Antwort, so sehen Sie, wie das im Vergleich zu dem Wert von xmlhttp.
- Sie können bitte werfen Sie einen Blick in meinen code, und sehen Sie, ob Sie mir helfen mit ihm?link
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem könnte sein, dass Sie nicht tatsächlich senden Sie die Daten als utf-8 kodiert. Es könnte in der Ansi oder was auch immer string/Datei-Codierung, die Sie verwenden. Und dann wird es nicht verwenden können, um Zeichen hoch als 127 in ASCII-code. Sind Sie sicher, dass die original-text-stream ist utf-8? Haben Sie versucht, andere Kodierung, wie ein iso-* Formate?