首页 >后端开发 >Golang >如何从 Go 中的字符串中删除无效的 UTF-8 字符?

如何从 Go 中的字符串中删除无效的 UTF-8 字符?

Patricia Arquette
Patricia Arquette原创
2024-12-16 21:02:11531浏览

How to Remove Invalid UTF-8 Characters from Strings in Go?

从 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn