Maison >développement back-end >Golang >La désorganisation échoue avec 'Caractère non valide '\x00' dans la chaîne littérale'
php小编苹果解析报告:当你在处理字符串文字时,如果遇到无效字符'\x00',解组操作会失败。这个问题可能出现在多种情况下,例如从数据库中读取数据时或者接收用户输入时。解决这个问题的方法有很多,可以使用trim()函数去除字符串中的无效字符,也可以使用正则表达式匹配并替换掉无效字符。确保对用户输入进行过滤和验证,以避免无效字符的出现。
go 版本
)?$ go version go1.19.1
是
go env
)?linux
package main import ( "encoding/json" "fmt" "strconv" "strings" ) func unescapeunicode(ucontent string) (string, error) { content := strings.replace(strconv.quote(ucontent), `\\u`, `\u`, -1) text, err := strconv.unquote(content) if err != nil { return "", err } return text, nil } func main() { v := "{\"aa\":\"some\\u0000\"}" v2, _ := unescapeunicode(v) var m = make(map[string]interface{}) err := json.unmarshal([]byte(v2), &m) if err != nil { fmt.println(err) return } fmt.println(m) }
map[aa:some]
invalid character '\x00' in string literal
您可以通过删除 unescapeunicode
函数来更改 main 方法,如下所示。
func main() { v := "{\"aa\":\"some\\u0000\"}" var m = make(map[string]interface{}) err := json.Unmarshal([]byte(v), &m) if err != nil { fmt.Println(err) return } fmt.Println(m) }
注意:
\u0000
是一个 unicode。为了将 \u0000
包含在字符串中,应将 \u0000
替换为 \\u0000
。
双引号 ("
) 是保留字符,不能在 json 中使用,必须正确转义才能在字符串中使用。为此,应将双引号替换为 \"
。
您无需手动处理特殊字符转义。它将由 json.unmarshal
处理。
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!