1. ホーム
  2. Python

エンコード問題:UnicodeDecodeError: 'utf-8' コーデックは、位置のバイト 0xb3 をデコードできません。

2022-02-21 05:12:40

あるケースでは、次のようなエラーが報告されました。

UnicodeDecodeError: 'utf-8' コーデックは、位置 0 のバイト 0xb3 をデコードできません: 不正な開始バイトです。

Encoding problem: f = open(txtPath,'r',encoding='utf-8')

Change it to: f = open(txtPath,'r',encoding='gbk')

print(f.read())

CSVファイル読み込み時に別のエラーが発生しました。 

import pandas as pd
content = pd.read_csv('news.csv',encoding='utf-8')
print(content.head())

エラーの内容は以下の通りです。UnicodeDecodeError: 'utf-8' コーデックは、位置 0 のバイト 0xba をデコードできません: 開始バイトが無効です。

ここで、エンコーディングの問題をutf-8からgbkに変更しましたが、まだエラーが報告されます。

UnicodeDecodeError: 'gbk' codec can't decode byte 0xa2 in position 93: illegal multibyte sequence(93のバイトをデコードできません。

プログラムを変更したときにようやく

import pandas as pd
content = pd.read_csv('news.csv',encoding='gb18030')
print(content.head())

つまり、読み込みに成功したのは 

これらの種類の問題は、ファイルのエンコーディングの問題であり、ファイルのエンコーディングの種類は、最終的には、誰も知らないように、唯一の試しに最も一般的に使用されるエンコーディングフォーマット1を使用することができます。ここでは、ファイルのエンコード形式をgb18030に変更しましたが、この形式はたまに見かけるので試してみてください。