为了账号安全,请及时绑定邮箱和手机立即绑定

golang转换包含unicode的字节数组

golang转换包含unicode的字节数组

Go
心有法竹 2021-09-27 14:15:40
type MyStruct struct {    Value json.RawMessage `json:"value"`}var resp *http.Responseif 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 的经验很少,而且我很累。
查看完整描述

3 回答

?
凤凰求蛊

TA贡献1825条经验 获得超4个赞

您决定使用json 消息中的json.RawMessage键来阻止解析值value。


字符串文字"\u003chtml\u003e"是"<html>".


由于您告诉json.Unmarshal不要解析这部分,它不会解析它并按原样返回给您。


如果要将其解析为 UTF-8 字符串,请将定义更改MyStruct为:


type MyStruct struct {

    Value string `json:"value"`

}


查看完整回答
反对 回复 2021-09-27
  • 3 回答
  • 0 关注
  • 351 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信