postgres数据库编码和客户端编码不同

时间:2016-12-19 02:03:47

标签: python postgresql encoding utf-8

我目前正在使用现有的代码库。该项目需要postgres作为后端,它可以正常运行。基本上,项目需要从ISO-8859-1编码文件中读取并将内容发布到数据库。数据库的编码设置:

cs_db=> show server_encoding;
 server_encoding 
-----------------
 UTF8
(1 row)

cs_db=> show client_encoding;
 client_encoding 
-----------------
 UTF8
(1 row)

这是项目打印的日志:

2016-12-19 09:17:16 - cs - INFO - SET client_encoding='LATIN1'

该项目是用Python 2.7编写的。从文件中读取时,它使用原始方式 - 二进制格式:

with read(filepath, 'rb') as infile:
    for line in infile:
        process_line(line)

我只是对此感到困惑 - 根据我的理解,这个程序应该会中断,但不会出现以下记录:

cs_db=> select * from cs.tbl where "KEY" = 102023;
 rec_id_ |       rec_tm_       | KEY  |  OFID  | OFCD |                  OFNM                   | del_tm_ | old_id_ | new_id_ 
---------+---------------------+--------+--------+------+-----------------------------------------+---------+---------+---------
  158012 | 2016-04-09 10:41:20 | 102023 | 117354 | CB   | Mr. David Charles Brink M.Sc., D.Com.   |         |         |        
  158013 | 2016-04-09 10:41:20 | 102023 | 534788 | CE   | Mr. Karel Johan Grové AMP               |         |         |        
  158014 | 2016-04-09 10:41:20 | 102023 | 534794 | CF   | Mr. Philip Dieperink BCom (Hons), CTA,  |         |         |        
(3 rows)

因此,上面选择的第二条记录包含一些非ascii字符。但是数据库很乐意存储并选择记录。

所以我的猜测是postgres为我编码转换。但我不确定。我以为我必须将客户端编码设置为UTF-8才能使其正常工作?

编辑: 这是正确的链接吗? postgres doc。感谢

0 个答案:

没有答案