Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Знаки вопросов вместо русских букв при чтении результата запроса.

v7: Знаки вопросов вместо русских букв при чтении результата запроса.
Я
   Румата
 
08.10.20 - 11:48
OC Windows 7, в  региональных стандартах Язык программ не поддерживающих unicod: стоит "Русский", в реестре "1250" имеет значение "c_1251.nls", "1252" имеет значение "c_1251.nls".


Отправляю запрос по API :

пОбъект=СоздатьОбъект("WinHttp.WinHttpRequest.5.1");
пОбъект.Option(2,"utf-8"); // пробовал и windows-1251
...
=====================

В результате подучают ответ, читаю его, вместо русских букв "УТ", приходит "????". Как с этим бороться, помогите пожалуйста.
   Румата
 
1 - 08.10.20 - 12:01
Самое интересное что букв русских две в исходном тексте "УТ", а при чтении получается4-и вопроса "????". Мистика.
   Bigbro
 
2 - 08.10.20 - 12:04
ну раскодируй сам утф строку, что такого.
   Румата
 
3 - 08.10.20 - 12:08
(2) Пробовал https://helpf.pro/faq/view/495.html
Не получается.
   Bigbro
 
4 - 08.10.20 - 12:10
а что получается? по кодам символов то посмотри, сравни с таблицами УТФ, может там не УТФ-8 а УТФ-7 или еще какая то экзотика.
   acht
 
5 - 08.10.20 - 12:11
(0) Печалька. Никто не хочет читать документацию. Все механики-водители БТР первого года обучения бросаются кодить не понимая что делают вообще.

пОбъект.Option(2,"utf-8") ставит кодировку урла. На кодировку ответа влияет чуть меньше, чем никак.

(1) > а при чтении получается4-и вопроса "????". Мистика.
А что ты хотел от русских букв в уникоде? Один символ?

Поставь заголовок, что ты accept только charset какой надо. И скажи спасибо серверу, что он в тебя каким-нибудь gunzipом не плюнул.
   Румата
 
6 - 08.10.20 - 12:11
(4) Код символа первого вопроса равен 63 и таких символов подряд 4-и, вместо 2-х в изначальной строке.
   Bigbro
 
7 - 08.10.20 - 12:16
https://unicode-table.com/ru/0423/
63 63 63 63 - это не уникодовская "У", надо читать манула что тебе АПИ возвращщает и в какой кодировке.
   acht
 
8 - 08.10.20 - 12:19
(7) Кодировка портится в момент передачи строки в переменную 1С.
Хочешь конвертировать вручную - пиши кусок кода на vbs, там обрабатывай всю работу с WinHttp, а в 1С заворачивай это все в ScriptingControl
   Румата
 
9 - 08.10.20 - 12:35
Блин, а нет каких-нибудь параметров, чтобы ответ пришел в читаемой кодировке, без использования vbs ?
   Ненавижу 1С
 
10 - 08.10.20 - 12:37
(0) это из 7.7 выполняется? так там нет юникода
   Румата
 
11 - 08.10.20 - 12:41
(10) Это не поможет ? http://catalog.mista.ru/public/69136/
   Bigbro
 
12 - 08.10.20 - 12:44
(9) перечитай (5) последние 2 предложения.
   Румата
 
13 - 08.10.20 - 12:47
(12) Заголовок запроса надо изменить ? Если честно, не понял, что автор хотел сказать (
   Румата
 
14 - 08.10.20 - 12:49
(12) Что-то типа этого :
пОбъект.setRequestHeader(\"Content-Type\",\"application/xml; charset=Windows-1251\");
   Румата
 
15 - 08.10.20 - 12:50
(12) У меня сейчас вот такой код :

    пОбъект.Open("POST",УРЛСтрокаМетода,0); 
    пОбъект.setRequestHeader("Host",УРЛСтрока);
    пОбъект.setRequestHeader("Client-Id",ClientId);
    пОбъект.setRequestHeader("Api-Key",СокрЛП(APIKEY));
    пОбъект.setRequestHeader("Content-Type","application/json");  
    ТекстЗапросаДжейСон = "{}";   
    пОбъект.Send(СокрЛП(ТекстЗапросаДжейСон));
   acht
 
16 - 08.10.20 - 12:56
(14) Content-Type - это описание того, что ты передаешь. Того, что находится в теле твоего запроса. Чтобы повлиять на ответ сервера:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Charset
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Encoding

Все три. Чтобы в тебя плевали тем, что ты действительно понимаешь.
   Румата
 
17 - 08.10.20 - 12:59
(16) Спасибо, но я до сих пор не могу понять, где ты стебешься, а где помогаешь ))))
Буду пробовать )
   trad
 
18 - 08.10.20 - 13:05
(17) тогда по умолчанию считай, что везде помогает

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.