首頁 >後端開發 >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