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

How to decode server response to utf-8?

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

文档说:

The template parameter T specifies the type to return. Possible values are char and ubyte to return char[] or ubyte[]. If asking for char, content will be converted from the connection character set (specified in HTTP response headers or FTP connection properties, both ISO-8859-1 by default) to UTF-8.`

所以您可能应该检查返回的 http headers 或者您可以下载字节并对其进行转码。