如何解码服务器对 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 或者您可以下载字节并对其进行转码。
我使用 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 或者您可以下载字节并对其进行转码。