名、姓、住所などの個人情報を含むutf-8でエンコードされたpostgresdwhにデータをロードしています。これらの値には、ドイツ語の文字やumlauts
フランス語の文字などをé, â, à
含めることができます。データは Excel ファイルからデータフレームに読み込まれ、postgresql データベースにプッシュされます。以前、エンコード エラーを回避するために次の行を使用しました。たとえば、名の値については次のようになります。
df = pd.read_excel(dir_path, encoding='utf-8-sig')
df['fname'] = df['fname'].apply(lambda x: x.encode('windows-1252'))
別のエラーが発生したフランス語の文字に遭遇しました。
DataError('(psycopg2.DataError) invalid byte sequence for encoding "UTF8": 0xe9 0x20 0x20
エンコーディングを次のように変更しました。
df['fname'] = df['fname'].apply(lambda x: x.encode('utf-8-sig'))
ただし、スクリプトをそのままにしておくと、ドイツ語の文字を含む値は読み込まれません。windows-1252
は西ヨーロッパ言語に使用され、これらすべての特殊文字を処理できるはずだと思いました。これらすべての言語に適用される代替エンコーディングはありますか? または、処理された値に基づいてエンコーディングを変更する必要がありますか?