首页 >后端开发 >Golang >如何有效处理Go字符串中无效的UTF-8字符?

如何有效处理Go字符串中无效的UTF-8字符?

DDD
DDD原创
2024-12-07 06:44:14656浏览

How to Effectively Handle Invalid UTF-8 Characters in Go Strings?

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

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