postgres因字符集原因无法正常显示中文

因字符集原因无法正常显示中文
原因是客户端字符集和插入内容的字符集不匹配。PostgreSQL默认不做字符集转换,如果数据库是UTF8的字符集,一般终端的中文字符集会设置为GBK(可以看LANG环境变量确认),所以这个编码不经转换的存入数据库中,而数据库是UTF8的,PostgreSQL发现不是UTF8编码,就报上面的错。
要想打开自动字符集转换功能,必须告诉 pg 客户端使用的字符集。这时可以设置pg客户端编码为GBK,pg就会自动做字符集转换。
 
 
方法一:
打开CRT中的会话选项:在外观的选项中调整字符编码为“UTF-8”即可。
方法二: (enconding:编码;字符编码)
postgres=# show server_encoding;
 server_encoding
-----------------
 UTF8
(1 row)
 
postgres=#  show client_encoding;
 client_encoding
-----------------
 UTF8
(1 row)
 
postgres=# \encoding GBK
postgres=#  show client_encoding;
 client_encoding
-----------------
 GBK
(1 row)
 
postgres=# select * from student;
 no | student_name | age
----+--------------+-----
  2 | 李四         |  13
  1 | 张三         |  15
(2 rows)
 
postgres=# reset client_encoding;
RESET
postgres=# show client_encoding;
 client_encoding
-----------------
 UTF8
(1 row)
 
postgres=# select * from student;
 no | student_name | age
----+--------------+-----
  2 | 鏉庡洓         |  13
  1 | 寮犱笁         |  15
(2 rows)
 
 
最终正确的显示为:
postgres=# insert into student(no ,age,student_name) values(2,13,'李四');
INSERT 0 1
postgres=# select * from student;
 no | student_name | age
----+--------------+-----
  2 | 李四         |  13
(1 row)
 

你可能感兴趣的:(postgres)