我的第一篇文章在这里。我对 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