![]() |
![]() |
![]() |
|
кодировка WinHttp | ☑ | ||
---|---|---|---|---|
0
andr_scr
21.06.12
✎
16:51
|
Доброе время суток!
Получаю хмл файл через COMОбъект("WinHttp.WinHttpRequest.5.1"), использую метод POST. Файл получаю все отлично, но текст на русском вообще непонятной кодировки. Читаю на форумах, проблема известная, а вот решение не нашел. Может кто знает секрет в чем?! |
|||
1
oleg_km
21.06.12
✎
17:43
|
Есть такая проблема. Берите ответ не их responseText, а из responsBody вроде. Там его можно сохранить в файл, а файл открыть в нужной кодировке
|
|||
2
andr_scr
21.06.12
✎
19:06
|
(1) спасибо получилось...
|
|||
3
Adept
05.07.12
✎
09:42
|
Народ, подскажите как, у меня responsBody COM массив
|
|||
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()); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |