猿问

golang转换包含unicode的字节数组

type MyStruct struct {

    Value json.RawMessage `json:"value"`

}


var resp *http.Response


if resp, err = http.DefaultClient.Do(req); err == nil {

    if resp.StatusCode == 200 {

        var buffer []byte

        if buffer, err = ioutil.ReadAll(resp.Body); err == nil {


            mystruct = &MyStruct{}

            err = json.Unmarshal(buffer, mystruct)


        }

    }

}


fmt.Println(string(mystruct.Value))

它产生类似的东西:


   \u003Chead>\n  \u003C/head>\n  \u003Cbody>

文档在:http : //golang.org/pkg/encoding/json/#Unmarshal


说:解组引用的字符串时,无效的 UTF-8 或无效的 UTF-16 代理项对不会被视为错误。相反,它们被 Unicode 替换字符 U+FFFD 替换。


我觉得这就是正在发生的事情。我只是看不到答案,因为我对 Go 的经验很少,而且我很累。


心有法竹
浏览 352回答 3
3回答

凤凰求蛊

您决定使用json 消息中的json.RawMessage键来阻止解析值value。字符串文字"\u003chtml\u003e"是"<html>".由于您告诉json.Unmarshal不要解析这部分,它不会解析它并按原样返回给您。如果要将其解析为 UTF-8 字符串,请将定义更改MyStruct为:type MyStruct struct {&nbsp; &nbsp; Value string `json:"value"`}
随时随地看视频慕课网APP

相关分类

Go
我要回答