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

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

DDD
发布: 2024-12-07 06:44:14
原创
622 人浏览过

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板