psycopg2 在 python3 中的解码问题

问题描述 投票:0回答:0

我的第一篇文章在这里。我对 psycopg2 和 python3 有这个问题(它适用于 python2)。我有一个带有 LATIN1 编码的 PostgreSQL 数据库。

问题是这样的:当我从数据库中选择时,编码为 LATIN1 的值似乎被解码为 latin-1 但我不能将它们写为 latin-1 在文件中,这里是一个例子:

connection = psycopg2.connect("<db_data>")
cursor = connection.cursor()
cursor.execute("SELECT * FROM Products")
example = cursor.fetchone()[0]
# here repr(example) is 'Lim\\xf3n' and print(exmaple) is 'Lim\xf3n'
output = open('output.txt', 'w', encoding='latin-1')
output.write(example)
output.close()

所以当我用 latin-1 编码打开文件时,我希望看到

Limón

但我发现

Lim\xf3n

我还没有找到任何关于如何用 psycopg2 解决这个问题的信息,所以我真的希望有人能帮我解决这个问题。谢谢!

我还尝试将客户端编码设置为:

# Adding this line before the query
cursor.execute('SET client_encoding TO LATIN1')
>>> Lim\xf3n # This is what I see in the file

# An also with utf-8
>>> Lim\xc3\xb3n # This is what I see in the file
python postgresql psycopg2
© www.soinside.com 2019 - 2024. All rights reserved.