0
Postgresテーブルに文字列のリストを挿入しようとしています。PostgresqlとPython:UTF-8文字列を挿入する
文字列はフォルダ名で、Windowsマシンから収集され、UNIXスタイルの文字列に書き換えられます。
これは機能しますが、フォルダ名に "üöä"がある場合、挿入は失敗しませんが、空の文字列が挿入されます。ここではいくつかの例がある
def db_insert_paths(paths):
paths.sort()
for path in paths:
print(path)
print(type(path))
cur.execute("INSERT INTO rasp (folder) VALUES (%s)", (path,))
cur.close()
conn.close()
return 0
: 私もPostgresのサーバに送信されるトラフィックをキャプチャここ
は、私は値を挿入するために使用するコードです。/mnt/hdd/Bilder/2004/2004.08.15. Dorffest
<class 'str'>
INSERT INTO rasp (folder) VALUES ('/mnt/hdd/Bilder/2004/2004.08.15. Dorffest')
この挿入が機能します。データはテーブルにあります。
ただし、次のものがない:
/mnt/hdd/Bilder/2004/2004.08.30. Filterschacht räumen und reinigen
<class 'str'>
INSERT INTO rasp (folder) VALUES ('/mnt/hdd/Bilder/2004/2004.08.30. Filterschacht r��umen und reinigen')
エントリが空です。
私はここで間違っていますか?私はそれがいくつかの種類のエンコーディングが失敗していると推測しています。
私はWindows 8.1でPostgreSQL 9.5とともにpython3.4を使用しています。フィールドタイプは "text"です。
ありがとう:だから、
をそして、あなたはデシベルからそれを読みたい時にあなただけの代わりに
path.decode('utf-8')
でそれをデコードするよ、あなたはあなたのDBの文字セットを変更することができます。私はencode()とdecode()の使用を避けたいと思います。手動でphppgadminの文字列を挿入すると、期待どおりに動作します。 照合は 'en_US.UTF-8'で、文字型も' en_US.UTF-8'です。 – fsp
データベース内の文字列を手動で表示できますか? phppgadminがあなたのために自動的に文字列をエンコードするのだろうかと思います。 –
このスレッドは関連しているようです:https://sourceforge.net/p/phppgadmin/bugs/250/ –