从字符串中删除无效的 UTF-8 字符

我在字符串列表的 json.Marshal 上得到了这个:

json: invalid UTF-8 in string: "...ole\xc5\"

原因很明显,但是如何在 Go 中删除/替换这些字符串?我一直在阅读 docstunicodeunicode/utf8包,似乎没有明显/快速的方法来做到这一点。

例如,在 Python 中,您有方法可以删除无效字符,替换为指定字符或严格设置,这会在无效字符上引发异常。如何在 Go 中做等效的事情?

更新:我的意思是得到异常的原因(恐慌?) - json.Marshal 期望是有效的 UTF-8 字符串中的非法字符。

(非法字节序列如何进入该字符串并不重要,通常的方式 - 错误、文件损坏、其他不符合 unicode 的程序等)


明月笑刀无情
浏览 375回答 2
2回答

白衣染霜花

在 Go 1.13+ 中,你可以这样做:strings.ToValidUTF8("a\xc5z", "")在 Go 1.11+ 中,使用Map 函数和utf8.RuneError也很容易做到这一点,如下所示:fixUtf := func(r rune) rune {    if r == utf8.RuneError {        return -1    }    return r}fmt.Println(strings.Map(fixUtf, "a\xc5z"))fmt.Println(strings.Map(fixUtf, "posic�o"))输出:azposico
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go