Имя: Пароль:
1C
1С v8
УТ 11.4: ЧтениеJSON заменяется буква "о" на "п"
0 Deal with it
 
29.09.21
14:02
Собственно УТ 11.4.13.271, платформа 8.3.18.1289
В результате следующего кода где-то слетает кодировка:

СтрокаПараметраПолучения = Новый HTTPЗапрос("/api-1c/market-sku-info?sku=" + ИДМаркета); //ИДМаркета     
СерверИсточник = "ultrasport.ru";    
    
    Попытка    
        HTTP = Новый HTTPСоединение(СерверИсточник, , , , , , Новый ЗащищенноеСоединениеOpenSSL(Неопределено, Неопределено));    
    Исключение
        Сообщить("Не удалось создать новое HTTPСоединение!");
        Возврат "";
    КонецПопытки;

Попытка
    Результат = HTTP.Получить(СтрокаПараметраПолучения);
    Если Результат.КодСостояния = 200 Тогда
            
        Ответ = Результат.ПолучитьТелоКакСтроку();
            
        ЧтениеJSON = Новый ЧтениеJSON;
        ЧтениеJSON.УстановитьСтроку(Ответ);
        Данные = ПрочитатьJSON(ЧтениеJSON);
        ЧтениеJSON.Закрыть();
            
        Артикул = Данные.artikul;
                Модель = Данные.model;
        Иначе
       Сообщить("Код ответа " + Результат.КодСостояния);
    КонецЕсли;
Исключение        
  Возврат "";
КонецПопытки;

конкретно в этом возвращаемом параметре Модель = Данные.model буква "о" меняется на "п".
1 Deal with it
 
29.09.21
14:03
(0) для примера вот СКУ
14980-0YXRgNC\0Lw=

если вы в браузере выполните этот запрос, то вернет {"model":"хром","artikul":"A1005035"}, а в 1С "хрпм"
2 Deal with it
 
29.09.21
14:03
В чем может быть прикол?
3 polosov
 
29.09.21
14:07
(2) Уже после
Ответ = Результат.ПолучитьТелоКакСтроку();
есть замена?
4 Garykom
 
гуру
29.09.21
14:08
проверить чем то мимо 1С
указать кодировки
5 Garykom
 
гуру
29.09.21
14:09
и на другой платформе 1С
но имхо вряд ли бага в 1С
6 Deal with it
 
29.09.21
14:15
(4) кодировки ставил, не помогло
7 Kassern
 
29.09.21
14:16
(3) там реально почему то символ меняется, уже как получаешь строку с ответа)
8 Fragster
 
гуру
29.09.21
14:17
(1) смотри в браузере в девтулзах что, а не то, как это выглядит в окне. может это они как раз от скрэпинга/парсинга защищаются как ЦИК - особым шрифтом с переставленными символами
9 Deal with it
 
29.09.21
14:20
(3) уже в самом "ответ" {"model":"хрпм","artikul":"A1005035"}
10 Fragster
 
гуру
29.09.21
14:21
11 Deal with it
 
29.09.21
14:21
(8) можно поподробней куда смотреть? как выявить этот шрифт?
12 Fragster
 
гуру
29.09.21
14:22
(11) никуда не смотри, код рабочий
13 Deal with it
 
29.09.21
14:22
так в чем же прикол?
14 Fragster
 
гуру
29.09.21
14:22
(13) ну попробуй на другом релизе платформы или на другом компе
15 Fragster
 
гуру
29.09.21
14:22
под другим пользюком
16 Deal with it
 
29.09.21
14:23
(14) ок, глянем на следующем релизе платформы годном.
17 Kassern
 
29.09.21
14:28
(14) странно, у меня так как у ТС выводится. https://yadi.sk/i/MFIKkue2K2IDjg
18 Kassern
 
29.09.21
14:29
(17) платформа 8.3.19.1264
19 Мультук
 
гуру
29.09.21
14:34
(0)
1С:Предприятие 8.3 (8.3.18.1334)

Код автора = "хрпм"


аа = КоннекторHTTP.GetJson("https://ultrasport.ru/api-1c/market-sku-info?sku=14980-0YXRgNC\0Lw=");
Выдает "хром"

Так что разбирайся с кодировками, имхо
20 Kassern
 
29.09.21
14:41
блин все гораздо проще... вместо вашего артикула напишите sku=14980-0YXRgNC%5C0Lw%3D и будет вам счастье
21 Kassern
 
29.09.21
14:42
браузер сам экранирует символы, а вот в 1ске надо самому позаботиться это сделать, что собственно и делает модуль КоннекторHTTP.
22 Kassern
 
29.09.21
14:48
АриткулУРЛ=КодироватьСтроку("14980-0YXRgNC\0Lw=",СпособКодированияСтроки.КодировкаURL);
Запрос=Новый HTTPЗапрос("/api-1c/market-sku-info?sku="+АриткулУРЛ);
23 Deal with it
 
29.09.21
15:27
(22) Спасибо! Заработало. Возьму за правило кодировать строки перед отправкой в качестве параметра.