Имя: Пароль:
1C
1С v8
Кодировка в WinHttp.WinHttpRequest.5.1
,
0 Pandoch
 
23.07.13
18:05
Всех приветствую! Проблема с декодированием сообщения с сервера. Проверяю в fiddler - ответ с сервера верный (русские слова - нормальные русские слова), через этот объект тот же самый ответ сервера (именно русские слова) декодирует в кракозябры. вот код. Помогите понять в чем дело и как наладить кодировку.

WinHttp = Новый COMОбъект("WinHttp.WinHttpRequest.5.1");
       WinHttp.Option(2,"utf-8");
       WinHttp.Open("POST", URL,0);
       //WinHttp.SetRequestHeader("Accept-Language", "ru");
       //WinHttp.SetRequestHeader("Accept-Charset","utf-8");
       //WinHttp.setRequestHeader("Content-Language", "ru");
       //WinHttp.setRequestHeader("Content-Charset", "utf-8");
       //WinHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");
       WinHttp.Send(Текст);
       Ответ = РазобратьXML(WinHttp.ResponseText());

Запрос хранится в "Текст". Сам ответ хранится в WinHttp.ResponseText(). И там уже неверно декодировано. Пробовала совершенно разные комбинации параметров в setRequestHeader и WinHttp.Option(2,"utf-8"); (utf-8 или windows-1251) - и без них - не помогало.
1 Тьма
 
23.07.13
18:19
Декодируй полученный текст
2 Pandoch
 
23.07.13
18:20
Не нашла подобной функции в 1с.
3 Pandoch
 
23.07.13
18:21
Каким образом можно декодировать?
4 2mugik
 
23.07.13
18:23
(0)янасколько знаю восьмерка только в Юникоде работает.
5 Тьма
 
23.07.13
18:26
(4)Ты неправильно знаешь.
(3)Записать с одно кодировкой, прочитать с другой. Например.
6 Тьма
 
23.07.13
18:27
+(5)Если кодировка в заголовке ХМЛ-я и в текстовых полях ХМЛ-я отличается, то работать с ним можно только как с текстовым файлом.
7 Serginio1
 
23.07.13
18:29
8 Jaap Vduul
 
23.07.13
18:29
(3)
Получить ResponseBody вместо ResponseText, записать в файл, прочитать в нужной кодировке.
9 2mugik
 
23.07.13
18:30
(6)Ну хз когда отправлял текст на сайт и просили в Виндоуз1251. Нифига  не получалось. Хоть сохрани сначала в текст с нужной кодировкой хоть что. Передача из 1С все равно шла в юникоде. Выкрутились потоковой двоичной передачей.
10 Pandoch
 
23.07.13
18:30
в заголовке XML кодировка utf-8. но пробовала менять  и на windows-1251. В обоих случаях неверная декодировка с сервера. Я так понимаю что-то  с самим объектом встроенным, т.к. в фидлере на тот же самый запрос - приходит адекватный ответ.
11 Serginio1
 
23.07.13
18:30
(2) ЧтениеТекста
12 2mugik
 
23.07.13
18:35
(10)В какой кодировке сервер ответ посылает?
13 Pandoch
 
23.07.13
18:36
(12) - в utf-8
14 Serginio1
 
23.07.13
18:51
15 Torquader
 
23.07.13
21:08
В семёрке я делал перекодировку через объект MSScriptControl и код на VbScript, который может прочитать строку побайтово.
В восьмёрке можно попробовать получать код символа и по нему анализировать, что там будет (код символа возвращает сразу два байта).
16 sttt
 
23.07.13
21:17
попробуй так:

ТекстОтвета = Новый ТекстовыйДокумент();
ТекстОтвета.Прочитать(ИмяФайлаОтвета, КодировкаТекста.UTF8);

или смотри в СП по:

КодировкаXML (XMLEncoding)
Использование:

Только чтение.
Описание:

Тип: Строка.
Кодировка исходного документа XML
Содержит значение атрибута encoding объявления XML.
Если атрибут не указан или объявление не прочитано (отсутствует), то будет возвращена кодировка UTF-8.

Доступность:

Тонкий клиент, сервер, толстый клиент, внешнее соединение.
Примечание:

Поддерживаемые коды кодировок (с учетом правил http://www.w3.org/TR/2004/REC-xml-20040204/#NT-EncName):
UTF-8
17 Torquader
 
23.07.13
22:56
Ещё есть объект ServerXmlHttpRequest - он более новый, и рекомендуется использовать вместо HttpRequest.
18 Pandoch
 
24.07.13
10:30
(16) - с файла считывает тоже самое, пробовала.  кодировку XML задавала сама, при формировании текста запроса. Там дело не в ответе с сервера - с ним все с порядке, проверяла в фидлере. именно с объектом чтото, это он неверно перекодирует верный ответ с сервера
(17)- попробую использовать этот объект
19 Pandoch
 
24.07.13
10:55
(17) - Спасибо ОГРОМНОЕ! С этим объектом заработало
AdBlock убивает бесплатный контент. 1Сергей