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)
 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值