从 Go 中的字符串中删除无效的 UTF-8 字符
当尝试使用 json.Marshal 封送字符串列表时,可以遇到错误,指示存在无效的 UTF-8 字符。本文解决了这个问题,并提供了在 Go 中删除或替换此类字符的解决方案。
在 Python 中,unicode 模块提供了 unicode.replace 和 unicode.strict 等方法来处理无效字符。然而,Go 没有直接的等价物。相反,它依赖于不同的方法:
在 Go 1.13 中使用 strings.ToValidUTF8
要从字符串中删除无效的 UTF-8 字符,您可以使用字符串.ToValidUTF8 函数在 Go 1.13 中引入。它需要两个参数:输入字符串和用于无效字节的替换字符。如果替换字符是空字符串,无效字节将被默默删除:
invalidString := "a\xc5z" validString := strings.ToValidUTF8(invalidString, "") // validString will now be "az"
Using strings.Map and utf8.RuneError in Go 1.11
另一种选择解决方案是使用 strings.Map 和 utf8.RuneError 。 strings.Map 将函数应用于字符串中的每个符文,而 utf8.RuneError 表示无效的 UTF-8 字符。这是一个示例:
invalidString := "a\xc5z" fixUtf := func(r rune) rune { if r == utf8.RuneError { return -1 // Replace invalid characters with -1 } return r } validString := strings.Map(fixUtf, invalidString) fmt.Println(validString) // Output: "az"
以上是如何从 Go 中的字符串中删除无效的 UTF-8 字符?的详细内容。更多信息请关注PHP中文网其他相关文章!