ファイルを開くときに Python が「UnicodeDecodeError: \'utf-8\' codec can\'t decode byte 0xff...」というエラーをスローするのはなぜですか?

Patricia Arquette
リリース: 2024-11-03 21:07:29
オリジナル
745 人が閲覧しました

Why Does Python Throw a

トラブルシューティング: 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 サイトの他の関連記事を参照してください。

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