ホームページ > バックエンド開発 > Golang > Go 文字列内の無効な UTF-8 文字を効果的に処理するにはどうすればよいですか?

Go 文字列内の無効な UTF-8 文字を効果的に処理するにはどうすればよいですか?

DDD
リリース: 2024-12-07 06:44:14
オリジナル
621 人が閲覧しました

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート