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

时间:2019-03-13 21:24:44

标签: http curl d

我使用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;

1 个答案:

答案 0 :(得分:1)

文档说:

  

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

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