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 を使用して文字列内の文字をマッピングすることもできます。ルーンエラー。文字が 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 中国語 Web サイトの他の関連記事を参照してください。