Go 文字列変換における無効なバイト シーケンスの検出
無効なバイト シーケンスは、Go でのバイトから文字列への変換を妨げる可能性があります。このようなエラーを検出する方法を知ることは非常に重要です。
検出
UTF-8 シーケンスの有効性を判断するには、utf8.Valid 関数を使用します。
Go の文字列自然
逆一般的な前提として、Go 文字列には非 UTF-8 バイトを含めることができます。これらのバイトは、印刷、インデックス付け、WriteString メソッドに渡すことができ、さらに []byte に変換して戻すこともできます。
例外
ただし、Go は UTF-8 デコードを実行します。 2 つの特定のシナリオ:
無効な UTF-8 処理
無効な UTF-8 文字は、変換中に U FFFD 置換文字に置き換えられます。これにより、クラッシュすることなく解析を続行できるようになります。
影響
アプリケーションで U FFFD を拒否するなど、UTF-8 の有効性が必要な場合にのみ、明示的に UTF-8 の有効性を確認する必要があります。置換と無効な入力でのエラーの生成。
サンプルコード
package main import "fmt" func main() { invalidBytes := []byte{0xff} invalidString := string(invalidBytes) fmt.Println(invalidString) // Prints a special character fmt.Println(len(invalidString)) // Length is 1, not 3 fmt.Println([]rune(invalidString)) // [�], where � is a replacement character }
覚えておいてください、Go による非 UTF-8 バイトの処理はほとんどの場合透過的ですが、完全に理解するには例外を認識することが不可欠です。
以上がGo は文字列変換中に無効なバイト シーケンスをどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。