ホームページ >バックエンド開発 >Golang >Go で文字列への無効なバイト変換を検出するにはどうすればよいですか?

Go で文字列への無効なバイト変換を検出するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-06 18:08:17253ブラウズ

How Can I Detect Invalid Byte Conversions to Strings in Go?

Go での文字列への無効なバイト変換の検出

Go では、無効なバイト シーケンスを Unicode 文字列に変換しようとすると、常にエラーが発生するとは限りません。エラー。ただし、データの整合性を確保するには、このようなケースに対処することが不可欠です。

無効なバイト シーケンスを検出するために、Go は utf8.Valid 関数を提供します。この関数はバイト スライスを入力として受け取り、そのバイトが有効な UTF-8 でエンコードされた文字列を表すかどうかを示すブール値を返します。

例:

import "unicode/utf8"

func main() {
    // Invalid byte sequence
    bytes := []byte{0xFF}

    // Check validity
    if !utf8.Valid(bytes) {
        // Handle invalid byte sequence
    }
}

ただし、注意することが重要です。 Go では文字列内に非 UTF-8 バイトが存在することが許可されています。このような文字列は、印刷、インデックス付け、バイト スライスへの変換が可能です。

UTF-8 デコードは、次のような特定の状況でのみ実行されます。

  • for を使用して文字列のルーンを反復処理するときi, r := range s
  • を使用して文字列をルーンのスライスに変換する場合[]rune(s)

これらのシナリオでは、無効な UTF-8 バイトが置換文字 U FFFD に置き換えられます。

したがって、UTF- を積極的にチェックする必要があります。 8 有効性はアプリケーションの要件によって異なります。厳密な UTF-8 エンコーディングが必要な場合は、utf8.Valid を使用して無効なバイト シーケンスを検出して処理する必要があります。

以上がGo で文字列への無効なバイト変換を検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。