UnicodeDecodeError: 'ascii' codec can't decode byte 0xe7 in position 0: ordinal not in range(128)...

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') 一行代码指定数据库连接编码类型即可。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容