0
andr_scr
21.06.12
✎
16:51
|
Доброе время суток!
Получаю хмл файл через COMОбъект("WinHttp.WinHttpRequest.5.1"), использую метод POST. Файл получаю все отлично, но текст на русском вообще непонятной кодировки. Читаю на форумах, проблема известная, а вот решение не нашел. Может кто знает секрет в чем?!
|
|
4
Adept
05.07.12
✎
10:17
|
Вот, как то так ...
StreamTypeEnum = Новый Структура("adTypeBinary, adTypeText", 1, 2);
ConnectModeEnum = Новый Структура(
"adModeRead, adModeReadWrite, adModeRecursive, adModeShareDenyNone,
|adModeShareDenyRead, adModeShareDenyWrite, adModeShareExclusive,
|adModeUnknown, adModeWrite", 1, 3, 4194304, 16, 4, 8, 12, 0, 2);
SaveOptionsEnum = Новый Структура("adSaveCreateNotExist, adSaveCreateOverWrite", 1, 2);
StreamOut = Новый COMОбъект("ADODB.Stream");
StreamOut.Type = StreamTypeEnum.adTypeBinary;
StreamOut.Mode = ConnectModeEnum.adModeReadWrite; //Нужны и чтение и запись.
StreamOut.Open(); //Открыли на чтение и запись
StreamOut.Write(WinHttp.ResponseBody);
StreamOut.SaveToFile("d:\worck\tmp\rezult.zip", SaveOptionsEnum.adSaveCreateOverWrite); //"2" - перезапись файла
StreamOut.Close();
|
|
5
Torquader
05.07.12
✎
18:45
|
Вообще-то, лучше посмотреть в сторону MSXML2.ServerXMLHTTP и попытаться в заголовке указать требуемую кодировку, чтобы ответ был получен в ней.
А по умолчанию ответ получается в однобайтовой UTF-8, где символы Unicode кодируются 1-3 байтами.
|
|
6
smaharbA
05.07.12
✎
18:49
|
Функция ПолучитьОбертку()
ХТМЛ = Новый COMОбъект("htmlfile");
ХТМЛ.Open("text/html");
//<-- Подготовим нужные методы
ХТМЛ.Write("<script>
|var ХТМЛ;
|Опция=function(x,y,z){var ret=x.Option(y);if(z) x.Option(y)=z; return ret};
|Записать=function(x,y){x.Write(y.responseBody())};
|</script>");
Док=ХТМЛ.documentElement.document;
// Внедрение объекта Скрипта в самого себя, для сохранности контекста
Док.script.ХТМЛ=ХТМЛ;
// Все подготовке -->
Возврат Док.script;
КонецФункции // ПолучитьОбертку(Это)
//*******************************************
Процедура Сформировать()
Это=ПолучитьОбертку();
ХТТП = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
ХТТП.Open("POST",УРЛ,0);
Это.Опция(ХТТП,2,1251);
Это.Опция(ХТТП,4,13056);
ХТТП.SetRequestHeader("Accept-Language", "ru");
ХТТП.SetRequestHeader("Accept-Charset","Windows-1251");
....
Сообщить(ХТТП.getAllResponseHeaders());
|
|