如何解码服务器对utf-8的响应?

问题描述 投票:0回答:1

我使用std.net.curl.get获取json。

这是代码:

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;
http curl d
1个回答
1
投票

文件说:

模板参数T指定要返回的类型。可能的值是char和ubyte,以返回char []或ubyte []。如果要求char,内容将从连接字符集(在HTTP响应头或FTP连接属性中指定,默认情况下为ISO-8859-1)转换为UTF-8。

因此,您可能应该检查返回的http标头,或者可以下载字节并对其进行转码。

© www.soinside.com 2019 - 2024. All rights reserved.