|
v7: Знаки вопросов вместо русских букв при чтении результата запроса. | ☑ | ||
---|---|---|---|---|
0
Румата
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-и вопроса "????". Мистика.
|
|||
2
Bigbro
08.10.20
✎
12:04
|
ну раскодируй сам утф строку, что такого.
|
|||
3
Румата
08.10.20
✎
12:08
|
(2) Пробовал https://helpf.pro/faq/view/495.html
Не получается. |
|||
4
Bigbro
08.10.20
✎
12:10
|
а что получается? по кодам символов то посмотри, сравни с таблицами УТФ, может там не УТФ-8 а УТФ-7 или еще какая то экзотика.
|
|||
5
acht
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-х в изначальной строке.
|
|||
7
Bigbro
08.10.20
✎
12:16
|
https://unicode-table.com/ru/0423/
63 63 63 63 - это не уникодовская "У", надо читать манула что тебе АПИ возвращщает и в какой кодировке. |
|||
8
acht
08.10.20
✎
12:19
|
(7) Кодировка портится в момент передачи строки в переменную 1С.
Хочешь конвертировать вручную - пиши кусок кода на vbs, там обрабатывай всю работу с WinHttp, а в 1С заворачивай это все в ScriptingControl |
|||
9
Румата
08.10.20
✎
12:35
|
Блин, а нет каких-нибудь параметров, чтобы ответ пришел в читаемой кодировке, без использования vbs ?
|
|||
10
Ненавижу 1С
гуру
08.10.20
✎
12:37
|
(0) это из 7.7 выполняется? так там нет юникода
|
|||
11
Румата
08.10.20
✎
12:41
|
(10) Это не поможет ? http://catalog.mista.ru/public/69136/
|
|||
12
Bigbro
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(СокрЛП(ТекстЗапросаДжейСон)); |
|||
16
acht
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) Спасибо, но я до сих пор не могу понять, где ты стебешься, а где помогаешь ))))
Буду пробовать ) |
|||
18
trad
08.10.20
✎
13:05
|
(17) тогда по умолчанию считай, что везде помогает
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |