Как задать набор символов с помощью объекта XMLHttp для ЗАПИСИ в классическом ASP?

#encoding #asp-classic #character-encoding #serverxmlhttp

Вопрос:

Я должен использовать объект XMLHttp в классическом ASP, чтобы отправлять некоторые данные на другой сервер по HTTP с сервера на сервер:

 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)
 

Мне сказали (сопровождающий сервера-потребителя), что в зависимости от того, использую ли я этот код из Windows Server 2000 (IIS 5) или Windows Server 2003 (IIS 6), он получает данные в кодировке Latin-1 (Windows 2000 Server) или UTF-8 (Windows Server 2003).

Я не нашел никакого свойства или метода для установки набора символов данных, которые я должен отправить. Зависит ли это от некоторых настроек конфигурации Windows или сценариев (asp)?

Ответ №1:

Вы можете задать используемую кодовую страницу, установив опцию «SXH_OPTION_URL_CODEPAGE».

http://msdn.microsoft.com/en-us/library/ms763811(ПРОТИВ 85).aspx

Вы также должны использовать объект «MSXML2.ServerXMLHTTP», а не объект «MSXML2.XMLHttp», который предназначен для однопоточных приложений на стороне клиента.

Ответ №2:

Приведенный выше ответ, ссылающийся на страницу SXH_OPTION_URL_CODEPAGE, вводит в заблуждение. Этот параметр не связан с кодировкой тела запроса, о которой, я думаю, был задан вопрос.

Проблема с примером кода в вопросе заключается в использовании «:» вместо «=» в заголовке. Он должен быть установлен следующим образом:

oXHttp.setRequestHeader «Тип содержимого», «приложение/x-www-форма-url-кодированный; кодировка=ISO-8859-1»