Лучший отвечающий
кодировка при выводе русского текста по REST запросу

Вопрос
-
Доброго дня Коллеги,
есть никсовое ПО позволяющее обращаться к себе через REST API. При выводе на экран данных содержащих русский язык "крякозябры". В самом ПО и через его Web Интерфейс отображение корректное. Запросы через curl с удаленных никсовых машин выводятся тоже в некорректной кодировке.
примеры вывода ниже:
Web - Сайт
curl - "\u0421\u0430\u0439\u0442 "
powelshell - Сайтскрипт
$cred = Get-Credential add-type @" using System.Net; using System.Security.Cryptography.X509Certificates; public class IDontCarePolicy : ICertificatePolicy { public IDontCarePolicy() {} public bool CheckValidationResult( ServicePoint sPoint, X509Certificate cert, WebRequest wRequest, int certProb) { return true; } } "@ [System.Net.ServicePointManager]::CertificatePolicy = new-object IDontCarePolicy $url = "https://ххх.ххх.ххх.ххх:5665/v1/objects/services?attrs=state&filter=host.name=='WC'" Invoke-RestMethod -Method get -Uri $url -Credential $cred
чем посоветуете декодировать?
8 марта 2016 г. 1:26
Ответы
-
[Text.Encoding]::UTF8.GetString([Text.Encoding]::GetEncoding("windows-1251").GetBytes("СайС' ")) Сайт
- Изменено KazunEditor 8 марта 2016 г. 9:46
- Предложено в качестве ответа Alexander RusinovModerator 8 марта 2016 г. 12:38
- Помечено в качестве ответа Павел Козлов 9 марта 2016 г. 10:39
8 марта 2016 г. 9:33Отвечающий -
Хотя в отдельных случаях это работает, в других случаях данные могут быть безвозвратно утрачены при первом перекодировании (потока от веб сервера в строку).
Например, если имеются коды символов не входящие в кодировку по умолчанию, то они будут заменены на знаки вопроса. После чего восстановить исходные символы будет невозможно.
Скорее всего проблема в реализации сервиса который не возвращает кодировку (или возвращает неверную кодировку). Если есть возможность то следует починить сервис.
В противном случае надо подумать об использовании другого API который позволяет получить двоичный поток данных. Этот потом потом следует преобразовать в строку используя кодировку сервера.
This posting is provided "AS IS" with no warranties, and confers no rights.
- Помечено в качестве ответа Павел Козлов 9 марта 2016 г. 10:40
8 марта 2016 г. 16:53Модератор
Все ответы
-
[Text.Encoding]::UTF8.GetString([Text.Encoding]::GetEncoding("windows-1251").GetBytes("СайС' ")) Сайт
- Изменено KazunEditor 8 марта 2016 г. 9:46
- Предложено в качестве ответа Alexander RusinovModerator 8 марта 2016 г. 12:38
- Помечено в качестве ответа Павел Козлов 9 марта 2016 г. 10:39
8 марта 2016 г. 9:33Отвечающий -
Хотя в отдельных случаях это работает, в других случаях данные могут быть безвозвратно утрачены при первом перекодировании (потока от веб сервера в строку).
Например, если имеются коды символов не входящие в кодировку по умолчанию, то они будут заменены на знаки вопроса. После чего восстановить исходные символы будет невозможно.
Скорее всего проблема в реализации сервиса который не возвращает кодировку (или возвращает неверную кодировку). Если есть возможность то следует починить сервис.
В противном случае надо подумать об использовании другого API который позволяет получить двоичный поток данных. Этот потом потом следует преобразовать в строку используя кодировку сервера.
This posting is provided "AS IS" with no warranties, and confers no rights.
- Помечено в качестве ответа Павел Козлов 9 марта 2016 г. 10:40
8 марта 2016 г. 16:53Модератор -
Спасибо Коллеги, помогло.9 марта 2016 г. 10:41