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