UTF-8 バイト データのデコード: UnicodeDecodeError の処理
ソケット経由でクライアントから UTF-8 データを受信するコンテキストでは、次のことが可能です。無効な文字によって UnicodeDecodeError が発生する状況が発生します。この問題は、文字化けや検出を回避しようとする意図的な悪意のある試みなど、クライアントが非 UTF-8 データを送信するときに発生します。
解決策: 無効な文字の処理
これらの無効な文字がある場合は、適切なエラー処理戦略を指定して、unicode() 関数を使用して入力文字列を Unicode オブジェクトに変換することをお勧めします。
特定のユースケースでは、 ASCII コマンドのみが想定される MTA では、非 ASCII 文字を削除することが許容されます。 「ignore」パラメータを指定して unicode() を使用すると、文字列からこれらの文字が効果的に削除されます。
例:
import codecs # Use 'replace' to replace invalid characters with Unicode replacement character str = unicode(str, errors='replace') # Use 'ignore' to strip out invalid characters str = unicode(str, errors='ignore')
代替: ' を使用するコーデックのモジュール
もう 1 つの方法は、コーデック モジュールの open メソッドを使用して、適切なエンコーディングとエラー処理でファイルを読み取ることです。
import codecs with codecs.open(file_name, 'r', encoding='utf-8', errors='ignore') as fdata: # Perform operations on the decoded data
以上がUTF-8 バイト データをデコードするときに UnicodeDecodeError を処理するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。