如何在 Go 中处理字符串中无效的 UTF-8 字符
使用 json.Marshal 编组字符串列表时,您可以遇到错误消息“json:字符串中的 UTF-8 无效”。这是由于字符串中无效的 UTF-8 序列造成的。
替换或删除无效字符
在 Python 中,您可以使用方法来删除、替换或引发错误无效 UTF-8 字符的例外。 Go 提供了类似的解决方案:
Using strings.ToValidUTF8 (Go 1.13 )
此函数从字符串中删除无效的 UTF-8 序列,并将其替换为 Unicode 替换字符 (U FFFD)。
fixedString := strings.ToValidUTF8("a\xc5z", "")
映射和替换为 utf8.RuneError (Go 1.11 )
您还可以使用 strings.Map 和 utf8.RuneError 映射字符串中的字符。如果该字符是 Unicode 错误(无效),则将其替换为指定的后备值(例如 -1)。
fixUtf := func(r rune) rune { if r == utf8.RuneError { return -1 } return r } var input1 = "a\xc5z" fmt.Println(strings.Map(fixUtf, input1)) // Output: az var input2 = "posic�o" fmt.Println(strings.Map(fixUtf, input2)) // Output: posico
以上是如何有效处理Go字符串中无效的UTF-8字符?的详细内容。更多信息请关注PHP中文网其他相关文章!