Error 发生环境:
- Python 3.7
- psycopg2 - 2.8.5
试过 reload(sys) 然后修改编码(其实只对python2有用)、decode和encode(一般是处理读文件时的问题,对本问题无效)等等方法,笔者查了一下午崩溃边缘终于找到了病因!
解决方案在文末。
笔者在使用 psycopg2 进行 PostgreSQL 查询时,遇到 UnicodeDecodeError 异常,已解决。
上图可以看到,在执行查询并fetch结果时,遇到了UnicodeDecodeError。
不过,只指定一 int 类型列作为返回时却能正常范围,所以推断是因为范围结果中的汉字导致错误。
明确了可能的原因后,查看数据库连接的编码:
>>> conn.encoding
'SQLASCII'
这说明数据库连接的编码类型并不是utf8!
解决方案:conn.set_client_encoding('utf8')
一行代码指定数据库连接编码类型即可。