我使用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;
答案 0 :(得分:1)
文档说:
模板参数T指定要返回的类型。可能的值为char和ubyte以返回char []或ubyte []。如果要求输入char,内容将从连接字符集(在HTTP响应标头或FTP连接属性中指定,默认情况下均为ISO-8859-1)转换为UTF-8。
因此,您可能应该检查返回的http标头,或者可以下载字节并对其进行转码。