如何在 UTF-8 中正确编码 HTTP 响应字节?

How to encode HTTP response bytes in UTF-8 correctly?

使用 http 包发出 HTTP 请求后,我正在读取响应:

    resp, _ := client.Do(request)
    defer resp.Body.Close()
    responseBody, _ := ioutil.ReadAll(resp.Body)
    log.Println("body", string(responseBody))

响应是 JSON 格式,包含俄语字符,所以我在控制台看到了

{"error_code":201,"error_name":"\u041f\u043e\u043b ... "}

如何解码响应字节以便看到可读消息?

JSON Go 中的解码器可以处理编码符号,你需要在结构或其他值中解组有效载荷:

https://play.golang.org/p/Mt-phU4kxfy

package main

import (
    "encoding/json"
    "fmt"
)

func main() {
    payload := []byte(`{"error_code":201,"error_name":"\u041f\u043e\u043b ... "}`)
    var p interface{}

    _ = json.Unmarshal(payload, &p)
    fmt.Printf("%#v\n", p) // map[string]interface {}{"error_code":201, "error_name":"Пол ... "}

    var e struct {
        ErrorCode int    `json:"error_code"`
        ErrorName string `json:"error_name"`
    }

    _ = json.Unmarshal(payload, &e)
    fmt.Println(e.ErrorCode, e.ErrorName) // 201 Пол ...
}