私はスカンジナビア語のWebサイトをWebクローラーで読んでいて、それらをPostgreSQLデータベースに挿入したいと考えています。PythonでPostgreSQLにutf8データを挿入する際の問題
は、もともと私は、手動でこのような問題であろう文字を挿入しようとした、UTF-8として私PSQL DBをエンコードしてみました:
Insert into name (surname) VALUES ('Børre');
これは、Windows PSQLシェルで行われました。
これは私に以下のエラーを与えました:エラー: "UTF8"をエンコードするための無効なバイトシーケンス:0x9b。だから私はいくつかのグーグルを行った後、私はlatin1にクライアントのエンコーディングを変更しました。今、その声明は成功しました。サーバーのエンコーディングはまだutf8です。
私は私のpythonスクリプトを介して同じ挿入を行うと、その名前が私のデータベースにBレレとして現れます。クライアントのエンコーディングをutf8に戻すと、間違った特殊文字を持つエントリも取得されます。
私のpythonスクリプトはutf8でエンコードされていますが、正しい名前が表示されます。
挿入文は:
先に述べたようにcon = psycopg2.connect(*database details*)
print("Opened database successfully")
cur = con.cursor()
#INSERT NAME
query = "INSERT INTO name (surname) VALUES (%s) RETURNING id"
data = ('børre')
cur.execute(query,data)
、プリント(personObject.surname)が与えられる 'ボーア'
私は、次しようとした場合:私は、次の取得
query = "INSERT INTO name (surname) VALUES (%s) RETURNING id"
data = ('børre'.encode('utf-8'))
cur.execute(query,data)
私のデータベース:
\ x62c383c2b8727265
どのバージョンのPythonですか? –
スタックトレースを転記できますか? –
なぜUTF-8エンコーディングを使用しないのですか?今日、それを使用しない理由はありません。 – Daniel