UnicodeDecodeError: 無効な継続バイトのトラブルシューティング
「UnicodeDecodeError: 'utf8' コーデックはバイトをデコードできません無効な継続バイト、 「根本的な原因を特定することが重要です。この例では、UTF-8 を使用してエンコードされた文字を含む特定の文字列をデコードしようとすると問題が発生します。
文字 xe9 は、UTF-8 エンコードの文字「é」を表します。これを正しくデコードするには、この UTF-8 文字をサポートする適切なデコーダを使用する必要があります。ただし、エラーが示すように、この場合、デフォルトの「utf-8」デコーダは継続バイトを適切に処理できません。
「Latin-1」コーデックで成功するのはなぜですか?
ISO-8859-1 としても知られる「latin-1」コーデックは、 「エ」の文字。代わりに、バイト xe9 を文字「í」にマップします。これには継続バイトは必要ありません。
したがって、「latin-1」コーデックを使用すると、デコーダはバイト xe9 を「í」として正しく解釈します。 " そして、エラーなしで文字列 "a test of í char" を返します。
問題
元の文字列の「UnicodeDecodeError」を解決するには、UTF-8 エンコーディングをサポートするデコーダを使用する必要があります。たとえば、デフォルトの「utf-8」デコーダの代わりに、UTF-8 用に特別に設計された「u8」デコーダを使用できます。
v = o.decode("u8")
あるいは、ラテン語を使用するように文字列を変更できます。 1 UTF-8 コード化文字を Latin-1 相当の文字に置き換えることによるエンコード:
o = "a test of í char"
適切なデコーダまたはエンコードを使用することにより、文字列「UnicodeDecodeError:無効な継続バイト」エラーが発生することなく、正常にデコードできます。
以上がUTF-8 では「UnicodeDecodeError: Invalid Continuation Byte」が発生し、Latin-1 では発生しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。