5 Stimmen

Wie setze ich das Zeichenset mit dem XMLHttp-Objekt für ein POST in Classic ASP?

Ich muss das XMLHttp-Objekt in klassischem ASP verwenden, um Daten von Server zu Server über HTTP an einen anderen Server zu senden:

sURL = SOME_URL

Set oXHttp = Server.CreateObject("Msxml2.XMLHTTP")

oXHttp.open "POST", sURL, false 
oXHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded;charset:ISO-8859-1;"

sPost = SOME_FORM_DATA

oXHttp.send(sPost)

Mir wurde (vom Betreiber des empfangenden Servers) mitgeteilt, dass je nach Verwendung dieses Codes von Windows Server 2000 (IIS 5) oder Windows Server 2003 (IIS 6) Latin-1 (Windows 2000 Server) oder UTF-8 (Windows Server 2003) codierte Daten erhalten werden.

Ich habe keine Eigenschaft oder Methode gefunden, um den Zeichensatz der zu sendenden Daten festzulegen. Hängt dies von einer Windows-Konfiguration oder Skript-Einstellungen (asp) ab?

6voto

Kev Punkte 115293

Sie können die Codepage festlegen, indem Sie die Option 'SXH_OPTION_URL_CODEPAGE' setzen

http://msdn.microsoft.com/en-us/library/ms763811(VS.85).aspx

Sie sollten auch das Objekt 'MSXML2.ServerXMLHTTP' verwenden und nicht das Objekt 'MSXML2.XMLHttp', das für single-threaded Client-Apps gedacht ist.

6voto

Thomas Kjørnes Punkte 1921

Die oben genannte Antwort in Bezug auf SXH_OPTION_URL_CODEPAGE ist irgendwie irreführend. Diese Option hat nichts mit der Codierung des Anfragekörpers zu tun, worum es meiner Meinung nach in der Frage ging.

Das Problem mit dem Codebeispiel in der Frage ist die Verwendung von ":" anstelle von "=" im Header. Es sollte wie folgt festgelegt werden:

oXHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded; charset=ISO-8859-1"

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X