トラブルシューティング: Python Tools/Process.py の「UnicodeDecodeError: 'utf-8' コーデックはバイト 0xff をデコードできません...」
pix2pix-tensorflow リポジトリから「process.py」をコンパイル中に、Python は「UnicodeDecodeError: 'utf-8' コーデックは位置 0 のバイト 0xff をデコードできません: 無効な開始バイトです。」というエラーを生成します。エラーを追跡すると、「process.py」の 113 行目を指しています。
<code class="python">contents = open(path).read()</code>
エラーの理解:
Python は、次のバイト配列をデコードしようとします。 UTF-8 でエンコードされた文字列を Unicode 文字列に変換します。このデコード プロセス中に、バイト配列の先頭で無効なバイト シーケンス「0xff」が検出されます。このバイト シーケンスは UTF-8 エンコードでは許可されていないため、エラーが発生します。
考えられる原因:
open() 関数に指定されたパスにはバイナリ データが含まれている可能性があります。それは UTF-8 でエンコードされていません。これは、Python がテキスト データを予期しており、非テキスト文字に遭遇し、デコードの失敗につながることを意味します。
解決策:
エラーを解決するには、次の処理を行う必要があります。ファイルはバイナリモードです。これにより、Python がバイナリ データをテキストとしてデコードしようとするのを防ぎます。これを行う方法は次のとおりです。
<code class="python">with open(path, 'rb') as f: contents = f.read()</code>
open() モードに「b」を追加すると、ファイルはバイナリとして扱われ、内容はテキストとしてデコードされるのではなく、バイトとして読み取られます。これにより、UnicodeDecodeError が解決されるはずです。
以上がファイルを開くときに Python が「UnicodeDecodeError: \'utf-8\' codec can\'t decode byte 0xff...」というエラーをスローするのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。