test
という名前のデータベースが1列しかなく、some_data
というcharacter varying
列のデータベースを持っています。データベースには照合順序がde_DE.utf8のエンコードUTF8があります。 このデータベースへの接続がUnicodeのタイプが同じように登録された後に確立されている:私はPsycopg2 + Python 2 cursor.mogrifyでUnicodeデコードエラーが発生する
psycopg2.extensions.register_type(psycopg2.extensions.UNICODE)
psycopg2.extensions.register_type(psycopg2.extensions.UNICODEARRAY)
と私は
cur_test = C_test.cursor()
を接続
C_test = psycopg.connect(myhost [...])
を確立し、接続上のカーソルをオープン私のデータをユニコード文字列としてtest
に挿入してください。
cur_prod.execute("INSERT INTO test some_data VALUES ("+u'ö'+");")
テーブルには、UTF8の文字列としてユニコードu'öが格納されていると予想されます。"\xc3\xb6"
。
ユニコード拡張はユニコードを元に戻すことを保証し、実際に値を選択して印刷すると、'\xf6'
というユニコードの'ö'
が得られます。私はのように、カーソルの上にmogrifyを使用する場合:
cur_test.mogrify(u'%s',(u'ö',))
私はUnicodeDecodeエラーが原因で挿入することはできません"'\xc3\xb6'"
のような文字列を取得します。長い話が短いです:私は、登録されているUnicode拡張子と一緒にMogrifyを使用できますか、または私は文字通り連結してもらう必要はありませんか?
私の場合はそうではありません。理由は何ですか? – Dschoni