#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»