Как декодировать ответ сервера на utf-8? - PullRequest
0 голосов
/ 14 марта 2019

Я получаю JSON с помощью std.net.curl.get.

Вот код:

import std.stdio;
import std.json;
import std.net.curl;

void getJson()
{
    auto url = "http://some_domain.com";
    auto client = HTTP();
    client.addRequestHeader("Authorization", "some-uuid-abra-cadabra");

    writeln(url.get(client).parseJSON);
}

Все отлично работает, но ...

Текст кириллицыв полученном JSON выглядят так:

{"address":"ÐоÑква

Как его декодировать?


Вот решение:

auto resp = cast(string) url.get!(HTTP, ubyte)(client);
auto json = resp.parseJSON;

1 Ответ

1 голос
/ 14 марта 2019

Документация гласит:

Параметр шаблона T указывает тип возвращаемого значения.Возможные значения: char и ubyte для возврата char [] или ubyte [].Если запрашивать char, содержимое будет преобразовано из набора символов соединения (указанного в заголовках ответа HTTP или в свойствах соединения FTP, по умолчанию оба ISO-8859-1) в UTF-8.`

Таквозможно, вам следует проверить возвращенные заголовки http или загрузить байт и перекодировать их.

...